Cet article, rédigé en mars 2016, a été publié dans la revue de l’ARCSI, et nous le reproduisons avec l’accord de son auteur, Joël Lebidois. L’ARCSI est un réseau de compétences en matière de cryptologie et de cyber-sécurité, riche patrimoine de matériels et de documents qui fêtera ses 90 ans en 2018.
1 Introduction
Ces dernières décennies, les technologies de l’information nous ont habitués à passer de systèmes d’information extrêmement centralisés à des systèmes qui, au contraire, sont de plus en plus distribués. C’est le cas des réseaux de télécommunication dont les anciennes architectures en étoile ont été remplacées par des réseaux maillés composés de nœuds et de serveurs manipulant des paquets de données et des adresses (Internet). C’est aussi le cas des bases de données distribuées dont la situation physique ou géographique n’a plus aucune signification (nuages) et il en va de même pour les traitements de données répartis entre des machines distantes pour accomplir une tâche donnée.
Pourtant, certains services semblent encore résister à cette tendance générale vers l’éclatement des structures centralisées; ce sont tous ceux qui font appel à un tiers de confiance dont l’une des principales caractéristiques est d’inspirer confiance aux utilisateurs sur la base d’un consensus le plus souvent socio-économique, voire réglementaire. Dans cette catégorie on trouve pratiquement tous les services bancaires depuis la tenue des comptes jusqu’aux transactions financières de toutes sortes. On trouve aussi tous les services de notarisation assurant l’authenticité et l’intégrité de nombreux actes comme les titres de propriété ou les testaments. On trouve également les registres officiels de conservation des hypothèques, le service du cadastre, les agences nationales des titres sécurisés (immatriculations) etc. Mais le secteur privé n’est pas en reste où, entre autres choses, contrats, comptabilité, auditabilité, inventaires et sécurité réclament aussi des processus de confiance.
Fondamentalement la mission d’un tiers de confiance consiste à tenir un « grand livre » (ledger en anglais) où sont consignées « toutes les choses dont on veut être sûrs et de façon pérenne ». Autrement dit, ce grand livre doit être fiable et infalsifiable mais néanmoins aisément consultable par les utilisateurs. Comme par principe, ce tiers de confiance assure une fonction centralisée, il présente donc, dans tout système, un point critique de vulnérabilité technique, économique ou politique. Ces dernières années, c’est principalement ce constat qui a amené certains à réfléchir à un concept de « confiance distribuée » qui offrirait donc moins de vulnérabilité, mais pas seulement pour cette raison. En effet, parmi les tiers de confiance les plus importants nous n’avons pas encore parlé des Etats (ou groupes d’Etats) dans leur prérogative régalienne de création et de gestion monétaire. La monnaie fiduciaire (ou monnaie fiat) dont ils ont le monopole a une valeur nominale supérieure à sa valeur intrinsèque et ne vaut donc que par la confiance que les citoyens peuvent accorder à ces Etats au travers d’institutions centralisatrices. Dans un esprit libertaire, ce monopole a été contesté par un groupe de scientifiques anonymes connu sous le pseudonyme de Satoshi Nakamoto; il fut à l’origine du premier projet de monnaie virtuelle destiné à s’affranchir de toute autorité de tutelle: le bitcoin (BTC).
2 Le réseau Bitcoin
En 2008 paraissait un « white paper[2] » décrivant les principes du système proposé; la première implémentation, le premier bitcoin et les premières transactions virent le jour l’année suivante. En s’appuyant sur Internet pour le transport et sur les PC des clients comme terminaux, Bitcoin est un réseau « pair à pair » (P2P) ouvert à tous, où les transactions financières se font anonymement en bitcoins et directement entre utilisateurs sans aucune autorité centrale régulatrice. Ces transactions sont organisées de telle sorte qu’un bitcoin donné ne peut être en la possession que d’une seule personne à tout instant. Pour assurer que les bitcoins échangés soient affectés aux bons destinataires ou qu’un même bitcoin ne puisse être dépensé plusieurs fois[3], le système construit un grand livre électronique qui rassemble la totalité des transactions depuis la création du premier bitcoin. De par sa construction comme une suite de blocs de transactions vérifiées, cette base de donnée s’est vue attribuer le nom de « blockchain » ou chaîne de blocs et constitue la principale innovation en se substituant au tiers de confiance. Un tel historique permet de prouver qui détient quoi à tout moment. Cette chaîne est fiable car elle est dupliquée et stockée sur les milliers de nœuds[4] que comporte le réseau Bitcoin (environ 8000 nœuds à ce jour). Le contenu de l’historique est infalsifiable grâce un chaînage cryptologique des blocs: toute modification d’une transaction dans un bloc invalide la suite des signatures cryptographiques des blocs de la chaîne. Pour obtenir la confiance des utilisateurs il reste encore à garantir l’unicité de l’historique par un mécanisme de consensus de ces derniers sur le fait que la blockchain (le grand livre) en cours de construction est bien la bonne et non la création par un ou plusieurs utilisateurs malhonnêtes, à partir de la chaîne originale, d’une chaîne déviante ou « fourche » (fork chain) qui leur permettrait de prendre le contrôle du système. Le problème est d’autant plus ardu que les utilisateurs n’ont aucune raison de se faire confiance, sont anonymes et peuvent entrer ou sortir du réseau à leur gré. Dans ces conditions, il est clair qu’un consensus s’appuyant seulement sur un vote majoritaire des utilisateurs déclarant valable chaque bloc pourrait être mis en échec facilement par une multiplication incontrôlable des votes[5].
Satoshi Nakamoto a proposé un protocole dit de «preuve de travail[6] ». Chaque nœud est en charge de valider les transactions au fur et à mesure qu’elles sont diffusées à l’ensemble du réseau; c’est en particulier l’occasion de vérifier qu’aucun bitcoin ne fait l’objet d’une double dépense. Chaque transaction approuvée contribue à former le bloc du moment. Le bloc sera à son tour validé par une signature numérique le liant entre autres choses au bloc précédent; mais pour se faire tous les nœuds sont mis en compétition pour résoudre un « puzzle[7] ». Le premier nœud qui y parvient publie alors le nouveau bloc signé qui s’ajoute à la chaîne et il est récompensé par un certain nombre de bitcoins qui sont créés ex nihilo (25 BTC aujourd’hui et création d’un bloc toutes les 10 minutes en moyenne). L’incitation est assez forte pour pousser tous les nœuds[8] (ou mineurs) à s’équiper des moyens les plus puissants pour résoudre le puzzle ce qui engendre une puissance de calcul totale considérable à l’échelle du réseau. Ainsi, tout attaquant qui veut falsifier un ou plusieurs blocs en créant un « fork » durable devra disposer en moyenne à lui tout seul d’une puissance de calcul au moins égale à 50 % de la puissance disponible dans l’ensemble du réseau, puissance qui est elle-même à la limite supérieure des possibilités technologiques du moment[9]. On aboutit ainsi à la réalisation d’un véritable consensus majoritaire qui ne peut être déjoué que par la collusion d’un très grand nombre de « mineurs » ce qui réduit d’autant la probabilité d’une attaque réussie.
C’est sur ces bases que le réseau Bitcoin fonctionne depuis 2009 en dépit d’une réputation un peu sulfureuse qui lui a déjà valu quelques déboires entraînant à certains moments une très forte volatilité du BTC face au dollar. Pour mémoire citons le hacking en 2011 de Mt. Gox qui était un point d’échange entre BTC et devises ordinaires ou encore en octobre 2013 la fermeture par le FBI de « Silk Road » qui était un site du « dark net » qui procédait à de nombreuses transactions illégales en bitcoins. Néanmoins, en mars 2016, le réseau Bitcoin est encore solide et bien actif:
- Taux de change: 1 BTC = 417 USD
- Nombre total de bitcoins: 15 millions
- Capitalisation totale: 6,2 milliards USD
- Nombre moyen de transactions: environ 2,5/s (VISA: 2500/s)
- Nombre de comptes actifs: entre 3 et 8 millions
- Nombre de nœuds actifs: entre 7 et 8000
- Taille atteinte par la blockchain: 62 GB
3 Problèmes non résolus
Les points qui suivent sont examinés dans l’optique bitcoin mais pour certains d’entre eux peuvent s’appliquer à la plupart des cryptomonnaies.
Problème de gouvernance
Même si un système propose un service décentralisé, il ne peut pas se passer d’une certaine forme de gouvernance au moins au niveau de la maintenance et des inévitables évolutions techniques. Ainsi, tandis qu’une centralisation des décisions techniques devient indispensable, les « développeurs » acquièrent une position nécessairement privilégiée qui pourrait même devenir dominante. Dans le cas de Bitcoin, la cohérence technique du code source (Bitcoin Core) est assurée par une demi-douzaine de développeurs bien identifiés et une communauté de nombreux bénévoles au travers de divers forums et Fondations. Dans le cadre d’une organisation peu contraignante, les processus décisionnels ont du mal à émerger ou conduisent à des tensions entre les diverses communautés impliquées: développeurs, mineurs et utilisateurs. L’exemple actuel d’un projet de changement de taille des blocs[10] illustre bien ces difficultés qui pourraient conduire à l’éclatement de la blockchain actuelle en deux blockchains distinctes donc à deux réseaux distincts.
Pour optimiser leurs compromis entre gains et risques les mineurs ont formé des « pools » qui regroupent ou étendent leurs moyens calculatoires. Actuellement, quatre pools minières[11] représentent près de 75 % de la puissance de calcul du réseau Bitcoin. C’est un autre constat inquiétant pour la survie de l’esprit de décentralisation démocratique du réseau: la collusion des deux plus gros pools permet en théorie de prendre le contrôle du grand livre.
Protocole de consensus énergivore
En raison du très gros effort calculatoire imposé aux nœuds pour la vérification des blocs, la puissance électrique consommée en continu par l’ensemble du réseau Bitcoin est estimée aujourd’hui à environ 200 MW. A noter que cette consommation est destinée à augmenter au fil du temps car le protocole Bitcoin impose une réévaluation régulière du niveau de difficulté calculatoire pour tenir compte des améliorations[12] progressives en vitesse de traitement[13]par ajustement automatique à la puissance totale de calcul du réseau. Avec un prix moyen de 12 cents par kWh aux USA et pour un minage moyen de 150 BTC par heure[14], le coût de revient moyen d’un BTC, hors investissements, s’établit à environ 160 USD ce qui représente, en marginal, le coût d’opportunité, par bitcoin, pour choisir d’entrer dans le processus de minage. Tant que le cours du BTC (environ 400 USD aujourd’hui) est supérieur à ce coût, il y a une certaine logique économique à une telle consommation d’énergie. Néanmoins, il est bon de souligner que le système VISA consomme globalement cinq fois moins d’énergie pour un nombre de transactions mille fois supérieur. Cet écart donne la mesure du coût à consentir pour passer d’un système centralisé à un système de confiance distribué et la question se pose naturellement de savoir s’il est justifié.
Un statut légal mal défini
Il semble qu’il soit difficile de décider si les bitcoins sont des actifs physiques, des actifs financiers ou simplement une monnaie privée. Il n’est donc pas étonnant que leur statut juridique soit pour le moins ambigu et variable selon les Etats. Par exemple, les bitcoins sont interdits en Russie et en Thaïlande mais sont tolérés en Europe et en France qui les considère comme une unité de compte virtuelle à caractère spéculatif. Mais puisque l’Union européenne a décidé que le bitcoin n’est pas assujetti à la TVA il semble bien qu’il y ait acquis le statut de monnaie. Aux Etats-Unis, le statut du bitcoin dépend de l’Administration concernée: c’est une matière première pour l’Agence régulatrice du marché des matières premières mais c’est une monnaie pour l’IRS.
L’absence d’un cadre juridique explicite pour les monnaies virtuelles ne peut que freiner leur force innovante mais aussi les laisser à la merci d’utilisations frauduleuses qui entretiennent leur réputation parfois un peu trop négative, au détriment d’une normalisation qui deviendra nécessaire au vu de leurs récents développements.
Limitations
On a déjà cité le faible nombre de transactions par seconde que peut réaliser le réseau Bitcoin et qui conduit les développeurs à envisager une multiplication par 8 ou 20 de la taille des blocs ce qui provoquerait une modification majeure système.
Satoshi Nakamoto a souhaité limiter intrinsèquement l’agrégat monétaire en divisant par 2 tous les 4 ans (approximativement tous les 210 000 blocs) la récompense allouée aux nœuds de minage (les mineurs). Cette création monétaire était de 50 BTC à compter de 2009, elle est aujourd’hui de 25 BTC, descendra à 12,5 BTC à la fin de l’année 2016, etc. Cette progression géométrique de raison 1/2 se terminera quand la récompense atteindra moins de 1 BTC par bloc. Elle conduit à une masse monétaire maximum d’environ 21 millions de bitcoins aux alentours de l’année 2040. Il faut noter qu’à partir de là, les mineurs devront se contenter des rétributions[15] qui leurs sont dues pour leur travail de vérification des transactions et nul ne sait aujourd’hui si l’incitation restera suffisante pour les engager à poursuivre le vrai travail de minage qui est la seule façon de conserver un consensus résistant.
Risques
La forte volatilité du bitcoin le rend particulièrement vulnérable au risque de marché. A titre d’illustration, en partant de zéro, il a atteint 1 216 USD en novembre 2013 et il évolue actuellement (1° trimestre 2016) entre $375 et $425. Il existe aussi un réel risque de contrepartie en raison du peu de fiabilité ou de sérieux d’un certain nombre d’officines dédiées à l’échange des bitcoins contre les monnaies standard. Il faut aussi relever un risque de transaction ; en effet, ces dernières sont toujours irréversibles car le réseau Bitcoin n’offre aucune procédure de remboursement. Donc en cas d’erreur il ne faut tabler que sur la bonne volonté et la bonne foi des utilisateurs pour corriger directement entre eux les éventuels problèmes. Le caractère ouvert et distribué du réseau Bitcoin accentue les risques opérationnels: risque de compromission des clés privées des utilisateurs[16], risques de déni de service (DoS) sans oublier le risque global déjà mentionné de prise de contrôle du système par une attaque réunissant plus de 50 % de la puissance de calcul du réseau.
4 Autre cryptomonnaies
Depuis l’apparition des bitcoins il s’est créé un très grand nombre d’autres monnaies virtuelles dont l’objectif est de corriger certains défauts de Bitcoin ou d’ajouter d’autres services. On en relève actuellement (mars 2016) plusieurs centaines (700 environ)[17]. Nous ne citerons que les vingt plus fortes capitalisations:
Certaines de ces cryptomonnaies se distinguent du modèle initial Bitcoin principalement par leurs capacités à gérer, en plus d’une monnaie virtuelle, d’autres types d’actifs en utilisant le même principe de tiers de confiance distribué. Elles peuvent aussi proposer des constructions plus rapides des blocs en vue d’accélérer les transactions ou un plus grand nombre de transactions par unité de temps. Certaines d’entre elles, par exemple Peercoin ou Nxt, utilisent un principe de consensus différent du « Proof of Work » de Bitcoin: la « preuve d’enjeu » ou « Proof of Stake » (PoS) qui est liée à la quantité de monnaie virtuelle (l’enjeu) détenue par chacun des utilisateurs habilités à participer au vote majoritaire du consensus décidant de la validité d’un bloc. En effet, si le nombre de votes est proportionnel au nombre d’unités de monnaie virtuelle détenue, il est clair qu’il n’est possible de prendre le contrôle du réseau que si l’on détient soi-même plus de 50 % de la capitalisation ce qui paraît d’une part très difficile et d’autre part assez inutile puisque cela revient alors à s’attaquer soi-même. La mise en œuvre de cette nouvelle preuve de consensus a surtout été motivée pour éviter d’aboutir au même problème de consommation énergétique que celle provoquée par la preuve de travail de Bitcoin. Certains mettent en avant une faiblesse possible du PoS, appelée le « nothing-at-stake », arguant que si la blockchain présente une fourche, les utilisateurs participant au vote n’auront rien à perdre et tout à gagner en votant successivement pour les deux chaînes ce qui entraine immédiatement des possibilités de doubles dépenses, invalidant ainsi complètement le système. Une parade retenue par certaines cryptomonnaies consiste en un mélange de PoW du type Bitcoin et de PoS : le PoW est utilisé périodiquement pour valider la bonne blockchain; ainsi le travail énergiquement coûteux de minage se trouve un peu dilué.
5 Cryptomonnaies 2.0
Tout système de monnaie virtuelle peut être vu comme la résultante des éléments distincts suivants:
- Un token (par exemple le bitcoin)
- Des règles de transactions Peer-to-Peer de ces tokens, gérant des adresses, veillant aux signatures cryptologiques[18] des échanges, à la création des clés, à la diffusion des échanges sur le réseau, aux balances des comptes s’il y a lieu, etc.
- Un réseau, en général Internet, assorti des protocoles particuliers au système, notamment entre nœuds et entre nœuds et utilisateurs,
- Un grand livre infalsifiable et « indestructible » sous la forme d’une base de données particulière répliquée dans tous les nœuds, la Blockchain,
- Un processus de consensus décentralisé ayant pour objet de créer une confiance ou un accord global entre des parties ne se faisant pas confiance a priori, qui peuvent être anonymes et non nécessairement présentes au départ du processus.
En retenant tout ou partie de ces fonctions ou en modifiant chacune d’elles on peut obtenir une très grande variété de systèmes qui seront plus ou moins performants ou plus ou moins adaptés à tel ou tel service: des « trust machine ». C’est ce qu’il n’a pas manqué de se produire dans le cadre de ce qui est appelé maintenant « cryptocurrencies 2.0 ».
Nous avons déjà constaté qu’il existe plusieurs types de méthodes d’établissement d’un consensus « distribué »: les preuves de travail (PoW) et les preuves de parts (PoS), chacune d’elles possédant des variantes, par exemple le « proof-of-burn »[19]. Bien d’autres formes de preuves de travail sont concevables[20] faisant toujours appel à des limitations de ressources.
Pour ce qui concerne les services, on a pu constater le développement de centaines de monnaies virtuelles comme alternatives à Bitcoin. Mais les mêmes principes peuvent être appliqués à tout actif « numérisé » profitant ainsi de la confiance décentralisée et de la solidité de la blockchain[21]. Une première voie consiste à surajouter à la cryptomonnaie l’actif en question pour en faire une metadata parfois appelée « colored coin » dans la littérature. Une autre voie est de réaliser des réseaux spécifiques ou au contraire complètement adaptables au service recherché (c’est le cas par exemple d’Ethereum). On peut également introduire la notion de « Blockchain privée[22] » où c’est la fonction de grand livre fiable et infalsifiable qui prime entre partenaires qui se font confiance; de fait, le processus de consensus distribué n’est plus nécessaire tandis que la blockchain garantit une synchronisation fiable entre les différents acteurs (des réseaux bancaires s’intéressent au sujet[23] [24] [25]). Il existe également une large gamme d’applications réunies sous le vocable de « smart contracts » que l’on peut définir comme des outils pour automatiser et « graver dans le marbre » des interactions contractuelles comme par exemple des contrats d’assurance ou des paiements échelonnés; l’existence de la cryptomonnaie dans le système permet d’envisager le déclenchement automatique des règlements financiers entre des parties liées contractuellement sans l’intervention de tiers extérieurs.
Quelques références pour aller plus loin
Fonctionnement détaillé du réseau Bitcoin et ses fonctions cryptologiques:
Mastering Bitcoin, Andreas M. Antonopoulos, oreilly.com
Bitcoin Book, Pierre Noizat, (2012)
Understanding Bitcoin, Pedro Franco, (2015), Wiley
A Treatise on Altcoins, Andrew Poelstra
Analysis of hashrate-based double spending, Meni Rosenfeld
Autres systèmes de cryptomonnaies:
Nxt Whitepaper, the Nxt community
PPcoin: Peer-to-Peer Crypto-Currency with Proof-of-Stake, Scott Nadal
The Ripple Protocol Consensus Algorithm, David Schwartz
Tendermint: Consensus without Mining, Jae Kwon
Aspects économiques et marketing:
Bitcoin: Economics,Technology, and Governance, Rainer Böhme, Nicolas Christin, Tyler Moore, Benjamin Edelman
The Economics of Bitcoin Mining, Josua A. Kroll, Ian C. Davey, Edward W. Felten
SoK: Research Perspectives and Challenges for Bitcoin and Cryptocurrencies, Andrew Miller
The great chain of being sure about things, The Economist, Oct 31st 2015
Comprendre la blockchain, Livre Blanc (uchange.co)
Problèmes de consensus:
Impossibility of Distributed Consensus with One Faulty Process, Michael J. Fischer
Byzantine Consensus in Asynchronous Message-Passing Systems, Miguel Correira
Anonymous Byzantine Consensus from Moderately-Hard Puzzles: A Model for Bitcoin, Andrew Miller, Joseph J. La Viola
The Sybil Attack, John R. Douceur
The Byzantine Generals Problem, Leslie Lamport, Robert Shostak, Marshall Pease
Distributed Consensus from Proof of Stake is Impossible, Andrew Poelstra
On stake and Consensus, Andrew Poelstra
Majority is not Enough: Bitcoin Mining is Vulnerable, Ittay Eyal, Emin Gün Sirer
Cours instantanés et capitalisations des principales cryptomonnaies
Le site suivant permet la mise à jour à tout moment des cours et capitalisation des 712 principales cryptomonnaies :
http://coinmarketcap.com/all/views/all/
[1] Toute monnaie virtuelle utilisant de nombreux mécanismes cryptologiques destinés à sécuriser les transactions.
[2] Bitcoin : A Peer-to-Peer Electronic Cash System, Satoshi Nakamoto
[3] Par construction cette menace n’existe pas avec la monnaie fiat – sauf faux monnayage – mais surgit avec toute monnaie virtuelle
[4] Qui sont des utilisateurs particuliers équipés de moyens calculatoires plus importants
[5] Voir « The Sybil Attack »
[6] Proof of Work (PoW)
[7] Par essais systématiques avec une fonction à sens unique (SHA256), trouver une empreinte (ou hash) du bloc qui soit inférieure à un seuil fixé. Engendre un nonce qui est le nombre d’essais réalisés et qui sera la preuve de travail. Le réseau Bitcoin dans son ensemble réalise environ 1 million de tera-hash par seconde (1018 hash/s).
[8] Appelés « mineurs » car ils extraient des bitcoins…
[9] Dans le cas d’une fourche persistante, les mineurs retiendront celle dont la somme des PoW est la plus forte.
[10] Pour augmenter le nombre de transactions par seconde limité aujourd’hui à 7 par seconde et pour supporter la gestion d’autres informations que les seules transactions financières comme Factom (notarisation contractuelle) ou Counterparty (extension des virements à d’autres dénominations que le BTC)
[11] AntPool, F2Pool, BTCC Pool et BitFury.
[12] Les nœuds utilisent des processeurs spécialisés ou ASIC et un haut degré de parallélisme
[13] Afin de maintenir à 10 minutes le temps moyen séparant la vérification de deux blocs consécutifs.
[14] Récompense de 25 BTC pour chaque bloc vérifié
[15] Le minimum « transaction fee » est fixé à 0,00001 BTC par transaction.
[16] Les clés privées permettent de signer les transactions donc de libérer les bitcoins virtuels correspondants. Leur perte est l’équivalent, pour l’utilisateur, de la perte de son portefeuille.
[17] Voir par exemple http://coinmarketcap.com/all/views/all/
[18] Par paire de clés privée/publique sur courbes elliptiques (ECDSA, standard secp256k1)
[19] Consiste à rendre inutilisable un certain nombre de ses propres tokens comme preuve de travail
[20] Cuckoo Cycle: a memory bound graph-theoretic proof-of-work, John Tromp, December 31, 2014
[21] Great Chain of Numbers a guide to smart contracts, smart property and trustless asset management, Tim Swanson
[22] MultiChain Private Blockchain – White paper, Dr Gideon Greenspan
[23] Distributed consensus ledgers for payments, Accenture Payment Services
[24] De la finance à l’IoT, la révolution blockchain est en marche, Aude Fredouelle
[25] BNP lance la première application concrète de la blockchain en France, Aude Fredouelle
- Cryptomonnaies [1], consensus distribué et blockchain - 22 février 2017
Commentaires récents