Une épée de Damoclès sur le Bitcoin
Une épée de Damoclès sur le Bitcoin
Cet article met à jour et aborde de nouveaux aspects d'un thème traité il y a un an et demi dans L’attaque Goldfinger d’une blockchain et Bitcoin et contenu en calcul.
Les informations sur l' « attaque 51% » du Bitcoin sont assez difficiles à trouver et rarement très précises. On a l'impression que certains évitent de trop y réfléchir par peur peut-être de découvrir quelque chose qui leur déplairait.
Une attaque 51% est rendue possible quand un mineur de Bitcoins réussit à détenir plus de 50% de la puissance du minage, c'est-à-dire de la capacité à calculer des valeurs de la fonction de hachage SHA256. Aujourd'hui la puissance de hash du réseau est d'environ 1,5.1018 calculs de SHA256 par seconde (ici) ce qui est absolument considérable. Mener une attaque 51% est donc apparu impossible à certains.
Une telle attaque est envisagée par Nakamoto lui-même dans l'article où il définit le Bitcoin en 2008 : Bitcoin: A Peer-to-Peer Electronic Cash System
« We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. »
Nakamoto semblait considérer comme une condition nécessaire de résistance à une attaque que plus de 50% du pouvoir de calcul de hash ne tombe pas dans les mains d'un mineur. Quand il mentionne la « longest chain » il faut lire « blockchain détenant le plus fort contenu en calcul » ou ce qui est la même chose « blockchain ayant une somme de difficultés (sum of difficulties) la plus grande ». Nous allons y revenir.
Nakamoto n'avait sans doute pas envisagé la mise en place de pools de minage comme il en existe aujourd'hui permettant à de nombreux mineurs de regrouper leur force. Certains pool ont d'ailleurs atteint le 51% considéré comme fatidique (en fait n'importe quelle valeur au-dessus de 50% est aussi bonne). Ce fut le cas pour le pool Ghash.io en juillet 2014. Voir ici ou ici.
Un responsable de ce pool de minage avait cependant déclaré : « We never have and never will participate in any 51 [percent] attack or double spend against Bitcoin. »
Il est vrai qu'aucune conséquence grave ne s'est produite suite à ce passage au-delà des 50%. Il serait précipité cependant d'en conclure que ce type d'attaques sera toujours sans conséquences. Lorsque celui qui détient les 51% de la puissance de calcul de hash détient aussi beaucoup de Bitcoins, son intérêt est que la confiance en la monnaie cryptographique persiste et donc il ne profitera pas de sa position ; c'est ce qui s'est passé en 2014. On comprendra mieux pourquoi plus loin. Mais est-ce toujours le cas ?
En fait, il faut distinguer deux motifs différents pour une attaque 51%.
(a) On peut la mener pour effectuer des doubles dépenses (dépenser deux fois la même somme). Nous expliquerons comment et nous dirons que cela ne semble pas à craindre car impossible à masquer et assez peu rentable en considération des sommes à investir.
(b) On peut mener l'attaque simplement pour nuire au Bitcoin. En perturbant le fonctionnement normal du protocole, on cherchera à atteindre la confiance dans le Bitcoin, voire à la détruire totalement et définitivement. Ce type d'attaques a parfois été appelé « Goldfinger attack » allusion au film de James Bond réalisé par Guy Hamilton en 1964 où le personnage du méchant, Goldfinger, souhaite irradier le stock d’or américain du dépôt de Fort Knox avec un engin atomique pour rendre le stock inutilisable et augmenter la valeur de l’or qu'il possède. L'attaque sous cette forme est envisagée dans :
L'attaque est définie ainsi par les auteurs :
« [This is an attack] in which the attacker’s motivation is based on some incentive outside the Bitcoin economy. Such an adversary might, for example, be a law enforcement or intelligence agency which wishes to see Bitcoin holdings weakened. Equally, an adversary might have significant short positions in Bitcoin exchange markets. Or, as suggested by Becker et al. [...], such an adversary might be distributed in the form of a social protest movement opposed to activity in the Bitcoin community. »
Nous allons tenter de traiter quatre questions liées aux attaques 51%.
(1) Quel est l'ordre de grande de leur coût fin 2016 ? Nos raisonnements viendront confirmer les résultats de nos précédentes évaluations menées par des méthodes un peu différentes en 2015.
(2) Quels sont les mécanismes et possibilités des attaques 51% ?
(3) Quelle pourrait être la réaction des mineurs confrontés à une telle attaque ?
(4) Peut-on se prémunir contre de telles attaques en modifiant le protocole Bitcoin.
1 Evaluation du coût d'une attaque 51%
Méthode 1
Les mineurs ne dépensent pas plus qu'ils ne gagnent au moins sur le long terme. L'inverse serait absurde. Il s'agit d'une sorte d'évidence économique. Le texte plus précis suivant détaille l'argument. Il est tiré de : Arvind Narayanan, Joseph Bonneau, Bitcoin and Cryptocurrency Technologies, Princeton University Press, 2016.
« We expect that miners will typically be somewhere close to the economic equilibrium in the sense that the expenditure that they incur in terms of hardware and electricity will be roughly equal to the rewards that they obtain. The reason is that if a miner is consistently making a loss, she will probably stop mining. On the other hand, and if mining is very profitable given typical hardware and electricity costs, then more mining hardware would enter the network. The increased hash rate would lead to an increase in the difficulty, and each miner’s expected reward would drop. »
Le coût annuel de la dépense totale de minage est en tout cas de l'ordre de grandeur ou inférieur à ce que les mineurs gagnent en un an.
Aujourd'hui, les mineurs gagnent par an (en comptant le Bitcoin à 500 euros, valeur en gros en août 2016 ; 510 euros le 25-8-2016) :
6*24*365*12,5*500 euros par an = 328 500 000 euros
Ils empochent aussi les commissions qui accompagnent les transactions. Aujourd'hui c'est environ 80 Bitcoins par jour, soit environ :
80*365*500 euros par an = 14 600 000 euros
Notons que les commissions ("fees") sont inférieures en moyenne à 100 Bitcoins par jour, donc moins d'un Bitcoin par page de la blockchain (il y a 24*6 = 144 pages par jour). Cela correspond donc à moins de 10% des 12,5 Bitcoins créés à chaque ajout de page. Des chiffres et des courbes ici.
En tout, les mineurs gagnent donc environ 350 millions d'euros par an.
C'est en gros ce qu'ils dépensent par an en électricité et investissement matériel et de fonctionnement. Nous supposerons que leur matériel devient obsolète au bout d'un an, mais on pourra revenir sur cette hypothèse. L'investissement matériel nécessaire à égaler les mineurs et atteindre 50% de la puissance de minage est donc inférieur à 350 millions.
Dans la réalité c'est assez sensiblement inférieur car dans ces 350 millions, il y a l'électricité pour une année alors que l'attaquant cherchant à avoir plus de 50% n'a besoin de l'électricité (mais aussi des locations de locaux et les salaires à verser) que pour quelques heures ou quelques jours.
C'est inférieur aussi car dans les 350 millions, il y a le bénéfice que les mineurs veulent faire. On pourrait envisager que les mineurs perdent temporairement de l'argent car ils compteraient sur une augmentation du cours du Bitcoin et que les investissement faits en matériel sont engagés, mais cette perte ne peut pas être très importante en proportion sur de longues périodes. Nous supposerons qu'il n'y a pas de perte quand le Bitcoin s'échange à 500 euros.
Nous arrivons donc à un coût de l'attaque 51% inférieur à 350 millions d'euros.
Trois autres facteurs non pris en compte pourraient faire encore baisser la note :
- le matériel de minage s'il est fabriqué en très grande quantité aura sans doute un prix plus bas par un effet d'économie d'échelle.
- le matériel de minage pourrait être loué et non pas acheté.
Joseph Bonneau et al. Why buy when you can rent. Bribery attacks on Bitcoin consensus 2014
- Nicolas Courtois insiste sur le fait qu'on peut prendre le contrôle de 51% de la puissance de hash sans avoir à beaucoup débourser. Il suffit de s'emparer de quelques ordinateurs, par exemple ceux qui coordonnent les pools de minage les plus gros. Réussir un tel exploit n'est pas très couteux, ce qui ne veut pas dire facile, puisqu'il faudrait réussir à hacker ces machines dont on imagine qu'elles sont assez bien surveillées. Voir :
Encore une remarque sur l'évaluation décrite au-dessus du coût d'une attaque 51% : si on changeait l'évaluation du temps d'obsolescence du matériel des mineurs pour le faire passer de 1 an à 2 ans on arriverait au double, soit 700 millions euros.
C'est assez peu (même avec cette valeur sans doute largement supérieure à la réalité) en regard de l'argent dont dispose un état, ou même les grandes firmes : Apple par exemple a des réserves de cash d'environ de 200 milliards de dollars !
Méthode 2 pour évaluer le gain annuel des mineurs en partant d'une valeur cumulée des Bitcoins de 10 milliard d'euros (environ, en août 2016)
Le nombre de Bitcoins gagnés en un an est aujourd'hui la moitié du nombre de Bitcoins gagnés par an avant le "halving" de juillet 2016 (quand la rémunération des mineurs est passée de 25 Bitcoins toutes les 10 minutes à 12,5 Bitcoins toutes les 10 minutes). Ce nombre est donc 1/8 de ce celui gagné pendant les 4 ans où on obtenait 25 Bitcoins par page.
De même ce nombre est 1/16 du nombre de Bitcoins gagnés par an pendant les 4 premières années quand on gagnait 50 Bitcoins par 10 minutes. Ici, nous ne prenons pas en compte les commissions qui représentent sensiblement moins de 10% des gains des mineurs. Dans l'année qui vient on gagnera donc X Bitcoins alors qu'avant on avait gagné 8X+16X=24X. On gagnera donc (10 milliards d'euros)/24 = 400 millions d'euros
On retombe sur le même ordre de grandeur qu'avec le calcul précédent. Notons que nous sommes retombés sur des valeurs proches en ordre de grandeur de celles trouvées et mentionnées ici. La fourchette assez large des diverses évaluations publiées par d'autres observateurs comportent les nombres suivants (dont les plus faibles correspondent à des évaluations faites à des dates assez éloignées et sont donc sans surprises assez inférieurs puisque les calculs dépendent du cours du Bitcoin) : 100 millions de dollars, 145 millions, 300 millions, 400 millions, 700 millions, 800 millions.
Notons encore un calcul faux présenté ici :
D'abord l'auteur donne deux résultats différents dans son texte, 5 milliards de dollars, et 5000 milliards de dollars. L'erreur quand l'auteur arrive à 5 milliards résulte d'une surévaluation du prix des puces ASIC nécessaires : on peut bien sûr les acheter très chères, mais cela ne sera certainement pas le cas de celui qui en fabriquera ou en fera fabriquer la quantité voulue pour une attaque 51%. L'erreur quand l'auteur arrive à 5000 milliards de dollars vient apparemment d'un mauvais décompte de zéros ! Curieusement, le fait de passer en un an de 200 millions (pour une évaluation qu'il mentionne) à 5000 milliards et d'arriver à une valeur supérieure à la capitalisation totale des Bitcoins ne semble pas intriguer l'auteur, qui n'y voit qu'une conséquence de l'augmentation de la puissance de hash du réseau, sans réaliser l'absurdité économique que serait le minage si ces évaluations étaient justes.
Venons-en au détail sur ce que serait une attaque 51%.
2 Fonctionnement des attaques 51% et effets
L'utilisation simple de la puissance acquise par un acteur disposant de 51% lui permet de gagner la récompense distribuée toutes les 10 minutes dans la moitié du temps ou plus.
Cela n'a pas beaucoup de conséquences et il lui faudra attendre de l'ordre de grandeur d'un ou deux ans pour retrouver ce qui a été investi (s'il procède comme nous l'avons envisagé). Une telle attitude ne doit d'ailleurs pas être qualifiée d'attaque et ce qui serait gagné serait simplement le revenu normal et prévu d'un détenteur de beaucoup de puissance de hash.
Le problème devient ennuyeux quand le détenteur des 51% crée une blockchain parallèle — nous la nommerons blockchain d'attaque — pendant plusieurs périodes de 10 minutes, disons N périodes, cela sans la faire apparaître dans le réseau pendant sa construction. Quand il commence, il prend la blockchain courante, puis comme s'il était confiné dans une partie du réseau isolée par accident, il ajoute seul de nouvelles pages en résolvant les problèmes posés par les preuves de travail, ce qu'il réussit un peu plus vite que le reste des mineurs puisqu'il dispose d'une puissance de calcul un peu supérieure à la leur.
Cette blockchain d'attaque aura un contenu en calcul supérieur à celui de la blockchain courante qui est aujourd'hui environ 1025 hash (ici).
À l'instant où la blockchain d'attaque est placée dans le réseau Bitcoin, elle vient en concurrence de la blockchain courante. On parle de fork lorsqu'une telle situation se produit. Dus à d'autres causes, des forks se produisent régulièrement, environ toutes les 50 pages ajoutées. Cependant, les forks correspondant à plus d'une page de désaccord sont rares.
La blockchain d'attaque gagne contre la blockchain courante, c'est-à-dire est reconnue comme celle donnant le véritable historique des transactions Bitcoin depuis sa naissance en janvier 2009. En effet, ce qui est programmé dans les clients du réseau pair à pair est qu'en cas de présence de plusieurs blockchains sur le réseau, ils doivent choisir celle qui a le plus de contenu en calcul. C'est donc ce que fera chaque client du réseau Bitcoin.
Voici une citation expliquant et justifiant le mécanisme retenu de résolution des forks et donnant un exemple de fork dû à une autre cause qu'une attaque 51% :
Pedro Franco. Understanding Bitcoin: Cryptography, engineering and economics, John Wiley & Sons, 2014.
« The Bitcoin protocol solves a fork in favor of the longest blockchain. Blockchain length is measured by the combined difficulty of all the blocks in the chain. If blockchain difficulty were measured by the number of blocks instead, an attacker could generate many “valid” blocks with a lower difficulty than the legitimate blockchain, thus winning the blockchain race by cheating. This is not possible, and an attacker must resort to having a significant percentage of the network hash rate at her disposal to pull off such an attack. [...] Forks can also occur due to differences in the code run by various nodes. One famous example occurred in March 2013 after the release of version 0.8 of Bitcoin Core, which changed the database used for the UTXO from BerkeleyDB to LevelDB. The new version introduced a subtle change in the rules of the Bitcoin protocol [...]. This change resulted in a block being recognized as valid by the miners running version 0.8, but invalid for miners running version 0.7 of the software, creating a fork in the blockchain. As there was more computational power running version 0.8, this branch of the blockchain pulled ahead. However, this was leaving miners running the older version behind. Developers and mining pool operators discussed the course of action, and decided to revert to the branch followed by miners with the older version. Miners and users running version 0.8 downgraded to version 0.7 and reset their blockchains to that branch. Some services had to shut down temporarily while performing the downgrade to protect from possible double-spending attacks. Forks due to changes in the protocol are an exception to the rule that forks should resolve themselves organically. »
Revenons à notre description de l'attaque 51%.
Le blockchain d'attaque gagnera donc le fork.
La première conséquence de ce changement de blockchain soudain sera que tous les mineurs gagnants de la blockchain courante pendant les N périodes de construction de la blockchain d'attaque perdront leurs gains (de 12,5 Bitcoins par page aujourd'hui). En effet, c'est le mineur détenteur des 51% (ou les mineurs détenteurs des 51% associés pour mener l'attaque ; il peut y en avoir apparemment plusieurs pour brouiller les pistes) qui aura gagné les Bitcoins distribués sur la blockchain d'attaque, devenue la seule valide.
Notons que le temps nécessaire à la blockchain d'attaque pour ajouter les N pages sera un peu plus court que celui nécessaire pour ajouter les N pages correspondantes à la blockchain courante, cela parce que justement l'attaquant dispose d'un peu plus de puissance de calcul que le reste du réseau et donc résout les énigmes des preuves de travail soumises plus rapidement en moyenne. De ce fait quand l'attaquant fait apparaître la blockchain d'attaque, il a une certaine avance. Il se peut même qu'il ait calculé une ou plusieurs pages de plus que la blockchain courante. Dans tous les cas, la blockchain d'attaque contient un contenu en calcul supérieur à la blockchain courante et puisque c'est le critère qui détermine le choix des clients du réseau, c'est la nouvelle blockchain qui s'impose.
(A). Le basculement du réseau d'une blockchain à l'autre est ennuyeux car la blockchain d'attaque pourrait ne contenir aucune des transactions passées dans les pages de la blockchain courante pendant les N périodes de la construction de la blockchain d'attaque. Cela annulerait toutes les transactions validées pendant les N périodes par la blockchain courante devenue invalide. Toutes les transactions, y compris celles qui ont attendu 6 périodes (si N > 6) pendant la phase de construction seraient donc invalidées et les comptes émetteurs re-crédités de facto. On imagine le trouble que cela engendrerait !
(B). La blockchain d'attaque pourrait être moins brutale et valider toutes les transactions validées par la blockchain courante pendant les N périodes de la préparation de la blockchain d'attaque, sauf peut-être de très rares concernant par exemple le détenteur des 51%. Ces quelques rares transactions annulées lui permettraient de mener des doubles dépenses puisque ses comptes seraient re-crédités une fois la blockchain d'attaque mise en place.
De telles doubles dépenses seraient visibles de tous car il serait apparent qu'il y a eu deux transactions pour chaque compte concerné, même si seule la seconde transaction est validée au final. Cela aurait pour effet de rendre méfiant le bénéficiaire de la seconde transaction qui, prudent, ne considèrera sans doute pas avoir vraiment reçu les sommes arrivées, cela même si elles semblent validées car ajoutées à la blockchain active. On peut donc parier que mener des doubles dépenses ne sera pas le but d'un attaquant détenteur de 51%. Il est vraiment difficile de concevoir que le bénéfice qu'il pourrait tirer des doubles dépenses dépasse les sommes engagées pour disposer des 51% (sauf peut-être dans les cas imaginés par Nicolas Courtois, quand les 51% sont obtenus par la prise de contrôle des ordinateurs pilotes de gros pools de minage).
Notons quand même que si cela se produisait avec de grosses transactions, un grave trouble en résulterait, et les utilisateurs naïfs du Bitcoin (ils sont nombreux !) seraient déconcertés par une telle situation déclarée plus ou moins implicitement impossible par les promoteurs du Bitcoin.
(C) On peut imaginer des situations pires que celles décrites en (A) et (B). Il se pourrait par exemple que seule une petite partie des transactions passées dans la blockchain courante pendant les N périodes de 10 minutes de la préparation de l'attaque ne soient pas reprises dans la blockchain d'attaque. Par exemple 1% de ces transactions seulement seraient éliminées. Tout semblerait assez bien ; presque tout le monde serait content ; sauf les victimes des 1%. On imagine le trouble qui en résulterait : une grande partie des utilisateurs n'ayant rien à reprocher à la nouvelle blockchain alors que d'autres seraient en quelque sorte floués !
(D) D'autres méthodes d'exploitation des 51%, sont sans doute imaginables et peut-être pires encore car plus subtiles. Voir par exemple la Repeated Chain Replacement Attack.
Tout cela serait propre à nuire gravement à la confiance dans le Bitcoin dont le protocole général en exhibant de graves anomalies perdrait probablement une grande part de sa crédibilité.
Terminons cette partie par quelques précisions sur ce que peut et ne peut pas une attaque 51%. Comme on l'a vu, ce que peut faire l'attaquant dépend de l'instant I où il a commencé à miner en secret pour construire sa blockchain d'attaque. Il ne peut rien faire concernant les transactions antérieures à cet instant I, donc pas question de tenter des doubles dépenses concernant des sommes mises dans des transactions avant cet instant. Pas question non plus d'annuler la moindre transaction antérieure à I. Plus contraignant encore : lorsque l'attaquant fabrique sa blockchain d'attaque de 10 minutes en 10 minutes, il met ou ne met pas certaines transactions dans les pages qu'il y ajoute progressivement, et ce qu'il fait est alors irréversible. En particulier, une fois la blockchain d'attaque dévoilée, tout ce qui a été mis et omis l'est de manière irréversible... à moins d'une autre attaque 51% en cours !
Notons en revanche qu'il est faux de dire en général que les transactions éloignées dans le temps sont définitivement fixées et impossibles à annuler par une attaque 51%. La règle suggérant d'attendre 6 périodes de 10 minutes pour les grosses transactions est une illusion face à une attaque 51%. Si un acteur particulièrement méchant et patient construit en secret une blockchain d'attaque depuis une semaine, même les transactions passées il y a 7 jours pourront être annulées.
3 Quelle pourrait être la réaction des mineurs ?
Si de telles attaques se produisaient, la communauté des mineurs et des utilisateurs tenterait de réagir. C'est ce qui s'est passé pour Ethereum en juin et juillet 2016, ce qui a conduit à un dédoublement prolongé de la blockchain Ethereum qui se poursuit aujourd'hui encore (28 août 2016) ! Voir ici. Il y a maintenant Ethereum et Ethereum Classic. Cela fait un peu désordre, mais les créateurs de blockchains sont de grands enfants turbulents prompts à se disputer et que rien n'arrêtent, quelle que soit l'image navrante qu'ils donnent d'eux-mêmes.
C'est aussi ce qui s'est produit pour le Bitcoin le 6 août 2010 et le 11 mars 2013. Voir ici ou ici. Des détails sur le fork de 2013 ici.
Les mineurs du Bitcoin envisageraient sans doute de revenir en arrière à un état antérieur de la blockchain courante. Sans doute celui correspondant à l'apparition de la blockchain d'attaque sur le réseau. Cela annulerait les effets d'éventuelles disparitions de transactions entre la blockchain courante et la blockchain d'attaque et annulerait aussi toutes les transactions passées entre l'apparition de la blockchain d'attaque et la réaction des mineurs (certaines de ces transactions pourraient sans doute être réintégrées plus tard dans les pages de la blockchain réparée). Le but serait de rendre définitivement invalide la blockchain d'attaque. Il faudrait cependant pour cela que les mineurs se mettent d'accord sur les modifications à apporter au protocole général (et donc aux clients du réseau Bitcoin) et que ces modifications soient programmées et mises en place dans une proportion importante des nœuds du réseau. Ils sont aujourd'hui environ 5000 ce qui rend difficile tout accord. Il faudrait aussi que l'attaque ne soit pas plus subtile que celles envisagées ici.
Cependant, il est difficile d'imaginer que la réaction soit rapide vu le nombre de nœuds majeurs du réseau Bitcoin et de la difficulté qu'ils ont aujourd'hui de trouver des accords, comme on l'a vu à propos du changement de taille maximum des pages (Block size limit controversyi). Ce qui s'est produit pour Ethereum en juin et juillet 2016 ne rend pas optimiste non plus puisque cela a donné un dédoublement d'Ethereum !
Notons aussi une énorme difficulté pour trouver un accord entre mineurs de façon à revenir en arrière sur un état antérieur de la blockchain : parmi eux et disposant d'un pouvoir de vote considérable puisqu'il détient 51% de la puissance de minage, il y a l'attaquant. Il ne sera certainement pas d'accord pour qu'on annule la blockchain qu'il a créée et cela risque de rendre totalement impossible toute réparation du protocole perturbé par son action. Il semble difficile de mettre à part cet attaquant, car il pourrait réapparaître sous diverses formes et agir à nouveau. Il semble bien que la logique du minage des Bitcoins a pour conséquence que le détenteur de 51% de la puissance de minage garde un pouvoir de nuisance quoi qu'on fasse.
La période d'arrêt, ou de troubles graves qui se produirait, même si les mineurs autres que l'attaquant l'emportent et éliminent la blockchain d'attaque et réussissent à contenir le puissant agresseur serait là encore catastrophique pour l'image du Bitcoin et la confiance que ses utilisateurs ont en lui.
Il n'est pas impossible qu'une réaction ait été préparée par le noyau des développeurs Bitcoin et la Fondation Bitcoin dont Gavin Andresen est un acteur central. Reste qu'en cas d'attaque ce qui se passerait serait probablement douloureux et grave, voire catastrophique pour le cours du Bitcoin qui rappelons-le ne tient que par la confiance des utilisateur en son protocole.
Il est assez étonnant que même les meilleurs spécialistes du Bitcoin ne semblent pas savoir aujourd'hui ce qui pourrait se passer dans le cas d'une attaque 51% dont le seul but serait de nuire au Bitcoin (attaque Goldfinger). Un exemple :
« Practical countermeasures. It's not clear whether a forking attack would actually succeed in practice. The attack is detectable, and it’s possible that the community would decide to block the attack by refusing to accept the alternate chain even though it is longer. [...] More importantly, it’s likely that such an attack would completely crash the Bitcoin exchange rate. If a miner carried out such an attack, confidence in the system would decline and the exchange rate would fall as people seek to move their wealth out of the system. Thus, while an attacker with 51% of the hashing power might profit in the short term from double‐spending, they might seriously undermine their long‐term earning potential to just mine honestly and cash in their mining rewards. »
4 Prévenir les attaques 51%
Comment se prémunir d'une attaque 51% ? Comment modifier le protocole Bitcoin pour que l'attaque ne fonctionne pas ?
L'idée de base des réflexions menées sur cette question consiste à revoir la règle du choix de la blockchain lorsque plusieurs blockchains se trouvent présentes sur le réseau (fork).
Rappelons avant d'envisager des modifications qu'il y a des bonnes raisons au choix de la règle du plus fort contenu en calcul.
Premier point. Il n'est pas possible d'envisager qu'une seule blockchain soit toujours présente sur le réseau Bitcoin ou sur un réseau du même type (pour les blockchains privées le problème est différent) sans que jamais se produisent de forks. En effet, il faut que le protocole général soit résistant aux pannes et en particulier à l'isolement de certaines parties du réseau. Ce type d'incidents engendrent nécessairement des situations où quand le réseau se rétablit, il y a plusieurs blockchains différentes sur le réseau puisque pendant la période de rupture de connectivité du réseau chaque partie indépendante poursuit les ajouts de pages avec des transactions qui y sont visibles. Comme nous l'avons déjà dit, les simples problèmes de délais de communication entre nœuds du réseau engendrent régulièrement des forks qui se résolvent tout seul par l'application de la règle du plus fort contenu en calcul.
Deuxième point. Le choix de la bonne blockchain quand il y en a plusieurs visibles sur le réseau doit prendre en compte le contenu en calcul de chacune car c'est ce qui rend difficile la fabrication de fausses blockchains. Si par exemple le critère de choix était le nombre de pages de la blockchain (celle qui en a le plus serait préférée indépendamment des contenus en calcul) alors il deviendrait peu coûteux de faire une fausse blockchain en s'arrangeant pour que la difficulté reste basse durant toute la durée (alors qu'elle a augmenté considérablement comme on le sait). On pourrait même fabriquer une blockchain à partir du tout début et la faire accepter ce qui pourrait annuler toutes les transactions depuis janvier 2009 ! La prise en compte de la difficulté du minage ou, dit autrement, du contenu en calcul des blockchains en compétition lors d'un fork est essentielle !
On le voit, le système adopté n'est pas dû au hasard et n'est en rien facultatif. Le modifier en introduisant un autre critère de choix que celui sur la quantité de calcul cumulé n'est pas facile. Diverses hypothèses ont cependant été envisagées.
Les commentaires sur ce sujet de Gavin Andresen se veulent rassurants. En réalité ils montrent une forme d'impréparation sans doute liée à l'idée exprimée par Andresen qu'une attaque Goldfinger serait « mauvaise » et « irrationnelle ». Or il ne doit pas être question ici de jugements moraux, et quant à la rationalité, nous pensons qu'un État gêné par le Bitcoin peut très rationnellement souhaiter le détruire, même si cela a un certain coût pour lui.
« A "51% attack" means a bad guy getting as much computing power as the entire rest of the Bitcoin network combined, plus a little bit more. [...] One of the things a 51% attacker can do is prevent any transactions or new blocks from anybody beside themselves from being accepted, effectively stopping all payments and shutting down the network. That would be bad. But it would also be obvious it was happening, and pretty easy to defend against. [...] Something like "ignore a longer chain orphaning the current best chain if the sum(priorities of transactions included in new chain) is much less than sum(priorities of transactions in the part of the current best chain that would be orphaned)" would mean a 51% attacker would have to have both lots of hashing power AND lots of old, high-priority Bitcoins to keep up a transaction-denial-of-service attack. And they'd pretty quickly run out of old, high-priority Bitcoins and would be forced to either include other people's transactions or have their chain rejected. The code already has a notion of "Bitcoin priority" that it uses to prevent transaction spam (sending gazillions of tiny transactions to yourself, just to make everybody else do the work of validating and storing them); extending that to influence the chain-fork-selection code wouldn't be hard. The devil is in the details, of course, and the risk of introducing a new chain-acceptance rule (high) have to be weighed against the chances that somebody rich and irrational will try to pull off the attack (low, in my opinion, but maybe I'm not sufficiently paranoid about Big Banks or Big Government using Dirty Tricks to shut down Bitcoin). Maybe I'll code it up and keep it as a "Not To Be Used Except In Case of Emergency" branch. »
La proposition de Gavin Andresen ne semble pas convaincre tout le monde
« Hi Gavin, This is a nice solution, but if the goal of the attacker is to simply reduce confidence in the reliability of Bitcoin transactions this could still be done. For example: Let's say a 51% attacker creates a hidden chain and includes only 99% of the transactions in the main public chain. Then after two weeks the attacker releases the hidden chain, which now becomes the longest chain. This chain would still be accepted by the above logic, but it would destroy confidence in Bitcoin. Here 1% of transactions would be rolled back, people that received payments or bought Bitcoins would suddenly "lose" them. Even worse, current miners and transactions would build on this new chain right away, making the ability to manually roll back to the older chain messy at best and probably impossible. Even with ASIC hash rates, a motivated agency could still implement this attack in just 1 Utah data center. »
Le bitcoin-wiki n'est pas très précis ni clair sur le sujet. En gros, il tente de se convaincre qu'une telle attaque serait très grave, mais qu'elle est improbable.
« Since this attack doesn't permit all that much power over the network, it is expected that no one will attempt it. A profit-seeking person will always gain more by just following the rules, and even someone trying to destroy the system will probably find other attacks more attractive. However, if this attack is successfully executed, it will be difficult or impossible to "untangle" the mess created — any changes the attacker makes might become permanent ».
Parmi les idées pour contrer une attaque 51%, mentionnons celle-ci de David Nicol. Il suggère de contrôler les mineurs et de limiter leur nombre, ce qui est une idée de blockchain privée totalement en contradiction avec le projet de Nakamoto. Il semble d'ailleurs qu'alors il faudrait aller plus loin, et renoncer au terrible coût des preuves de travail inutiles dans le cas des blockchain privées : on limiterait le nombre des mineurs et il leur serait attribué la récompense à tour de rôle, ou par un tirage équitable entre eux... mais ce ne serait plus le Bitcoin !
Une autre idée est aussi évoquée par Nicol : limiter la proportion de pages qu'un même mineur pourrait valider, par exemple jamais plus de 10 parmi 50 consécutives. L'idée ne semble cependant pas sérieuse puisque l'attaquant pourrait contourner la règle en se présentant sous plusieurs identités.
« Closing the door to participation in mining a little by including some kind of "trusted" bit in participation will make more sense as participation shifts from fully chain-aware wallets to intermediaries. The best way to do this might be closing participation in the public chain lengthening process, perhaps by all the current mining pools defining a closed communications channel and thereby shutting out newcomers, or at least vetting them a little. That way, if some major player with the ability to purpose hardware to deliver a 51% attack wanted to, they'd also need to join the club. Something like American anti-trust rules could be introduced, such as, a pool may not submit more than ten of every fifty blocks. »
En clair et en résumé, si la NSA, Apple ou n'importe quel acteur puissant que le Bitcoin gêne le souhaitait, alors rien ne l'empêcherait de porter des coups graves au Bitcoin en menant une attaque 51% de type Goldfinger, et peut-être de le faire tomber définitivement.
Le système d'incitation à surveiller et gérer la blockchain par la distribution de Bitcoins créés ex nihilo se basant sur les preuves de travail est une belle idée car, tout en permettant à tout acteur qui le souhaite d'entrer dans le réseau des mineurs et d'en sortir quand il veut, il met en place une sécurité d'assez bon niveau du protocole qui tient depuis bientôt huit ans ! Cependant cette sécurité n'est pas suffisante pour résister aux attaques d'acteurs vraiment puissants dont les buts seraient uniquement destructeurs.
Remplacer les preuves de travail, par d'autres choses (contrôle de la liste des mineurs, proof of stake, proof of burn, etc) ou même un mélange de plusieurs idées, comme c'est envisagé pour Ethereum, résoudrait peut-être le problème. Il n'est pas certain cependant que ce soit possible en préservant toutes les propriétés du Bitcoin et qu'on ne créerait pas d'autres possibilités d'attaque non encore entrevues et analysées. Introduire un contrôle pour que n'importe qui ne puisse pas devenir mineur, ou attribuer les nouvelles devises numériques créées en proportion de celles déjà détenues (proof of stake) sont des solutions décevantes, car elles instituent une forme de gouvernance centralisée que le Bitcoin réussit assez bien à éviter.
Sur ces questions voir 1, 2 ou Duong, Tuyet, et al. "Securing Bitcoin-like Backbone Protocols against a Malicious ajority of Computing Power." 2016.
5 Conclusion
Pour conclure, disons simplement que la question de l'attaque du Bitcoin par un puissant et riche acteur n'est pas clairement résolue aujourd'hui. Les ajustements ad hoc comme celui opéré pour Ethereum en juillet 2016 créent de graves problèmes et il serait sain pour le Bitcoin de se mettre dans un position de ne pas avoir à en faire, cela d'autant plus que la communauté Bitcoin semble de plus en plus divisée et qu'on peut douter de sa capacité à trouver rapidement un accord sérieux pour contrer une attaque brutale.
De plus, comme nous l'avons dit, le fait que l'attaquant dispose de 51% de la puissance de hash pourrait rendre totalement impossible toute opération d'annulation de la blockchain perturbatrice. Les retours en arrière qui ont sauvé le Bitcoin deux fois et, plus ou moins sauvé Ethereum récemment, ne seront sans doute pas envisageables dans le cas d'une attaque 51% de type Goldfinger.
Le Bitcoin est un outil facilitateur de bien des délits, en particulier c'est l'outil idéal pour les ransomware (ici ou ici ou ici). Le Bitcoin permet le blanchiment de l'argent sale, et toutes sortes de trafics. Certains députés s'en sont émus récemment et ont demandé son interdiction après avoir réussi à se faire livrer de la drogue à l'Assemblée grâce à lui (ici). Le Bitcoin pourrait aussi nuire à certaines monnaies s'il prenait plus d'importance. On a aussi compris maintenant qu'il peut exister d'autres types de blockchains au fonctionnement bien moins problématique et que ce sont elles qui ont sans doute vraiment un intérêt pour le monde économique et bancaire. Il est remarquable que le rapport du Wordl Economic Forum sur les blockchains (ici) ne mentionne pas le Bitcoin !
Notons aussi que les réglementations concernant les paiements en argent liquide sont de plus en plus restrictives. Depuis le 1 septembre 2015 les paiements en liquide sont limités à 1000 euros en France. Le Bitcoin est de l'argent liquide numérique. Pourquoi donc l'autoriserait-on sans limite ?
Le Bitcoin pourrait donc être l'objet d'une interdiction ou de l'attaque d'un État énervé par son existence échappant à ses contrôles. La Chine, les États-Unis, la Russie sont de possibles ennemis tout à fait compétents pour mener des attaques destructrices du Bitcoin. Ces pays entretiennent des armées de spécialistes de sécurité, plus ou moins hackers, qui mènent de petites (pour l'instant) guerres électroniques les unes contre les autres. Ces armées ne feront qu'une bouchée du Bitcoin le jour où cela sera décidé. Elles utiliseront l'attaque 51% ou une autre, inconnue à ce jour, dont on découvrira la grande subtilité quand elle opèrera. Je n'ai guère de doute : tout est prêt et n'attend qu'un feu vert.
Merci pour ce très bon article qui - bien que long et s'adressant à un public averti - reste aisé à lire et particulièrement riche en références pour approfondir le sujet.
Merci pour cet article très complet!
On peut difficilement trouver des arguments contredisant la démonstration technique. Cependant on peut argumenter qu’il est très simple pour un état de contrôler internet avec un firewall et pourtant il existe toujours des solutions de contournement, donc pour Bitcoin c’est pareil, il en restera toujours quelque chose même si on le ralenti. Je pense que Détruire Bitcoin techniquement est possible, mais il renaîtra sous une autre forme (en se basant sur la stack avant l’attaque par exemple)
J’aime bien l’exemple de Bittorrent, que l’on devait pouvoir couper en filtrant les paquets TCP/IP sur internet, le protocole s’est adapté en masquant ces paquets, etc
Pour ce qui est que Bitcoin facilite de blanchiment d’argent, là aussi techniquement on peut le faire, mais c’est plus simple de le faire en billets de banques, puis on laisse une trace infalsifiable dans une blockchain publique, c’est pas la meilleure solution de là pour blanchir (exemple de la DEA aux US avec Silk-Road)
Pour l’attaque à 51% elle sous-entend que l’attaque est possible, oui, mais aujourd’hui l’intérêt de casser le réseau est faible, en imaginant que l’importance de Bitcoin soit 100x plus important qu’aujourd’hui pour devenir “gênant", alors il faut mathématiquement 100x plus de ressource pour le faire tomber, ce qui alors est un problème pour un état (ce que je veux dire c’est que la sécurité du protocole est proportionnelle à sa valorisation puisque la dépense en PoW est suivi de la valeur du prix du bitcoin avec le “coinbase” par bloc)
Le plus gros problème avec l'argument du blanchiment, c'est qu'au final si on se retrouve avec une grosse somme en bitcoins c'est comme une valise de billets, ça se transforme à la limite mais ça le blanchit pas trop, si on vend tout contre des devises alors on nous posera les mêmes questions que si on ramène du cash à la banque.