Un site web a récemment mis en lumière le coût d’une attaque à 51% sur les blockchains utilisant la preuve de travail (Proof of Work – PoW en anglais). Cet article expose plusieurs éléments sur ce que cela signifie pour les blockchains concernés, à savoir ce qu’est une attaque à 51%, ce qu’est le site de location de puissance de calcul NiceHash et ce que l’on peut en conclure.

(Léonidas aux Thermopyles) — Jacques-Louis David, 1814. En 480 av. J.-C., une armée de 7 000 Grecques a tenté de barrer le passage à une force de 100 000 à 150 000 soldats Perses… id est une contre-attaque à 5,6% plutôt réussie car elle a permis de gagner assez de temps pour que reste de la Grèce s’organise contre l’invasion.

Attaque à 51%, de quoi parle-t-on ?

Avant tout il est nécessaire de comprendre comment le consensus en preuve de travail fonctionne. Si cette notion n’est pas claire pour vous, vous trouverez ci-dessous une vidéo (sous-titrées en français!) qui vaut vraiment les 26 minutes de détour, la section sur l’attaque à 51% commence à 18’58:

 

Voici un résumé inanimé:

Les noeuds dans le réseau d’une blockchain sont libres de participer s’ils le souhaitent à la création de nouveaux blocs. On parle alors de minage et les mineurs sont en compétition pour la résolution d’un problème pour lequel il n’y a pas de meilleure approche que la force brute. Une bonne image de ce problème est le cadenat à combinaison, pour ouvrir le cadenat il n’y a pas de meilleure stratégie que d’essayer toutes les combinaisons. Une fois la bonne combinaison trouvée tout un chacun peut vérifier rapidement que cette combinaison fonctionne. Le problème est donc difficile au sens où stratégiquement on ne peut que l’approcher par la force brute et en même temps il est très rapide d’en vérifier la résolution.

Après avoir assemblé des nouvelles transactions dans un bloc, les mineurs s’attaque au problème qui est propre à leur bloc. La combinaison qu’il cherche s’appelle le “nonce” et sa validité repose sur le fait que lorsque l’on applique une fonction cryptographique dite “de hachage” à l’ensemble des informations du bloc (nonce compris), le résultat est un nombre inférieur à un seuil communément admis au sein du réseau. Ce seuil est la “difficulté” du bloc. Le résultat d’une fonction de hachage étant imprévisible, l’activité de minage consiste à tester des milliards et des milliards de nonce jusqu’à en trouver un qui soit valide.

Devant la “difficulté” de la tâche, un nonce valide représente une preuve que le mineur a effectué une quantité considérable de calcul, dit autrement, qu’il a effectué un travail considérable. Vérifier que le travail a bien été effectué est aussi simple que de vérifier la combinaison d’un cadena. Fournir cette combinaison constitue une preuve de travail car le cadena est nécessairement généré sans sa solution.

Le nombre d’exécution de la fonction de hachage qu’est capable de produire un mineur est appelé son hashrate (nombre de hachage par seconde). Selon l’analogie du cadena, il s’agit du nombre de tours de roues du cadena qu’est capable d’actionner le mineur. La somme des hashrates des mineurs est le hashpower du réseau et statistiquement la part d’un mineur dans le hashpower du réseau correspond à son espérance de trouver le prochain bloc.

Les noeuds sont constamment à l’écoute des nouveaux blocs propagés sur le réseau. Parmi les informations contenues dans un bloc, on trouve une référence au bloc qui le précède d’où le fait que les noeuds stockent en fait une chaîne de blocs car chaque bloc se fait successivement référence jusqu’au premier bloc.

Parfois 2 ou 3 blocs différents sont diffusés sur le réseau de façon rapprochée dans le temps et faisant référence au même bloc comme précédent. Dans ce cas, les noeuds conservent ces blocs et attendent que de nouveaux blocs sont construits au dessus de ces blocs qui se font concurrence. Les blocs à venir ne peuvent faire référence qu’à un seul de ces blocs concurrents et nécessairement l’un des blocs devient la référence principale. Ce processus continue jusqu’à ce qu’une chaîne se distingue comme la plus longue et deviennent la chaîne canonique.

Remarque: le comportement par défaut des noeuds n’est seulement de suivre la chaîne la plus active (en terme de rythme de d’apparition de nouveaux blocs) mais aussi de stocker les chaînes orphelines. Certains noeuds choisissent d’être sélectif dans ce qu’ils conservent et de graduellement supprimer les données qu’ils n’ont pas obligatoirement besoin pour fonctionner.

En effet par exemple, lorsqu’un noeud vérifie qu’une transaction est valide, il vérifie que cette transaction est valide avec un état qu’il a précédemment vérifié mais il ne vérifie pas à nouveau la validité de cet état. Cela peut sembler aller à l’encontre du principe de “garder l’ensemble du registre” mais cela peut permettre de gagner beaucoup d’espace disque.

La règle de “suivre la chaîne la plus longue” a des implications profondes sur la notion de “finalité” d’une transaction: quand peut on considérer qu’une transaction a été finalisée, i.e. définitivement dans la chaîne canonique? Alors que la transaction est inscrite dans un bloc il se peut qu’une suite blocs ne l’incluant pas existe quelque part dans le réseau, le basculement des noeuds vers cette autre version peut remettre en cause l’existence de la transaction. En théorie il n’existe pas de seuil absolu à partir duquel la chaîne de blocs ne peut plus être réorganisée. En pratique, plus le bloc référençant la transaction est enfoui sous un grand nombres de blocs moins il y a de chances de réorganisation.

Historiquement sur Bitcoin il n’y a quasiment jamais eu de scission de la chaîne de plus de 6 blocs, à la notable exception d’Août 2010 où 53 blocs ont été abandonnés après la correction d’un bug d’overflow. Ceci explique pourquoi les places de marché pour les cryptomonnaies attendent en général 6 blocs avant de confirmer le crédit de bitcoin sur le compte de leurs utilisateurs. Ces 6 blocs correspondent en moyenne à un délai de 1 heure, cette règle des 1 heure est souvent aussi appliqués aux autres crypto-actifs.

Néanmoins en théorie, quelqu’un (l’attaquant) ayant un accès à une source considérable de puissance de hachage pendant pourrait générer une version alternative du registre et tenter de l’imposer au réseau. Pour se faire, l’attaquant doit posséder plus de la moitié du hashrate du réseau. Cette éventualité justifie les débats et les craintes face au regroupement des mineurs dans des coopératives (les mining pool) qui pèsent déjà un poids significatif dans l’ensemble et dépassent facilement 50% prisent en consortium.

 

Hashrate par pool de mining sur Bitcoin en juin 2018; source: https://blockchain.info/pools. Prisent ensemble, les 3 plus grosses mining pools (BTC.com, AntPool, et Slushpool) dépassent les 50% du hashrate de Bitcoin

Attaquer sans prendre le contrôle d’une partie du hashrate existant est néanmoins plutôt difficile car cela nécessite de déployer plus que l’ensemble du hashrate.

 

Pour se figurer cette difficulté on peut considérer le coût économique à l’abandon d’un bloc. Lorsqu’un mineur parvient à trouver un bloc valide le protocole de la blockchain émet une récompense pour le travail effectué et le compte du mineur est crédité de nouveau token. Dans le cas de bitcoin actuellement cette récompense s’élève à 12.5 BTC. En compétition pure et parfaite un mineur serait indifférent à l’idée de dédier sa puissance de calcul à la découverte de nouveau bloc celle de la dédier à la un attaquant fortuné. Avec une récompense de 12.5 BTC cela représente environ 90,000$ toutes les 10 minutes (au cours de juin 2018). Ce coût de la compromission des mineurs fait l’objet de nombreuses analyses académique, notamment celle-ci par Joseph Bonneau.

Qu’est-ce que NiceHash

NiceHash est une place de marché pour louer ou proposer à la location du hashrate: moyennant finance quiconque peut ainsi donner un coup de fouet à son operation de minage en toute discrétion. Besoin d’un coup de main pour prendre le contrôle de DogeCoin? NiceHash est là. Heureusement l’offre de hashrate est très faible comparé au hashpower total de la plupart des blockchains de référence (DogeCoin inclus).

Pour vous en convaincre, jetez un oeil à la colonne “NiceHash-able” sur https://www.crypto51.app . Par exemple, seulement 1% de la puissance nécessaire pour attaquer Bitcoin est disponible, de même 4% pour Ethereum (chiffres de juin). En revanche, des blockchain comme Ethereum Classic (102%), Bytecoin (115%), Bitcoin Gold (218%) ou Bitcoin Private (867%) sont dans une situation beaucoup plus préoccupante.

Les Serments des Horaces  — Jacques-Louis David, 1785. Autour de 650 av. JC, Rome était en guerre contre la cité rival d’Alba Longa. Les trois frères Horace firent le serment de défendre Rome et de provoquer en duel les trois frère Curatii. Un seul des Horaces revint en vivant de la confrontation et emporta la victoire sa cité, soit une contre-attaque à 50% réussie.

On peut se demander pourquoi des individus avec une capacité de minage à leur disposition choisissent de la proposer à la location sur NiceHash plutôt que de miner pour leur propre compte. Est-ce parce que le coût de l’électricité est trop haut ? Dans ce cas, pourquoi ne pas revendre le matériel de minage?

Une partie de l’explication repose peut être dans le facteur de  “flottement moral” des mineurs (pour en savoir plus sur ce concept rdv ici). A quel prix les mineurs acceptent ils de devenir des mercenaires et de mettre de côté leur moral. Sur le site crypto51, les prix d’une heure d’attaque à 51% sont extrapolés à partir du prix de location. La comparaison de ces prix avec les récompenses espérées du minage donne une estimation de ce facteurs sur les différentes blockchain.

Est-ce à dire que les blockchain ne sont pas sécurisé après tout?

Répondre à cette question est compliqué par la polysémie aussi bien du terme sécurité et que du terme blockchain. On peut faire référence indifféremment sous le terme blockchain au registre que constitue la blockchain, au réseau qui réplique le registre voire à l’unité de compte qui est inscrite dans le registre. C’est particulièrement le cas avec Bitcoin où la convention commence à s’instituer d’utiliser Bitcoin pour KKKK et bitcoin pour YYYYY. Ainsi la sécurité de chacun des aspects de la blockchain peut être considérée de manière spécifique.

Une attaque à 51% ravage toutes les dimensions d’une blockchain sauf son réseau. Un attaquant avec 51% du hashpower peut réécrire l’historique canonique de l’ordre des transactions de la blockchain à partir de n’importe quel bloc, les transactions passées et futures en sont censurés et les soldes des comptes modifiés. Certes l’attaquant ne peut pas contrefaire les signatures des transactions mais il peut retirer du registre de référence les transactions qui abondaient les comptes de son choix tout en refusant d’inclure les transactions émisent par ces comptes.

Malgré tout le réseau peut encaisser une telle attaque et permettre à l’historique original des blocs de se survivre. Cette résistance repose sur les noeuds qui conservent l’ensemble du registre. Un opérateur de noeud observant que le nombre blocs abandonnés est anormalement élevé peut lancer l’alerte qu’une attaque en cours a été détecté. Cette alerte permet aux développeurs de s’organiser pour proposer un réponse, notamment en changeant la Preuve de Travail afin de limiter l’impact du hardware utilisé par l’attaquant présumé, ou encore en abandonnant la Preuve de Travail pour une autre forme de consensus. En avril dernier, la blockchain Monero a changé son algorithme de Preuve de Travail pour éviter la concentration de la puissance de calcul après la mise sur le marché d’un hardware spéficique au minage sur Monero: l’Asic Antminer X3. De même, les développeurs de la blockchain Verge ont dû intervenir après l’exécution réussie d’une attaque à 51%.

Les licteurs rapportent à Brutus les corps de ses fils — Jacques-Louis David, 1789. En 509 av. JC, deux des fils de Brutus ont conspiré contre la République et Brutus alors consul les condamna à mort. Cette décision fut accueillie comme un acte remarquable de vertue civile et de dévotion à Rome… Caveant Consules!

Est-ce vos crypto-actifs risquent d’être affectés pour une telle attaque?

Non, surtout sur Ethereum et Bitcoin vos actifs sont sans aucun doute à l’abris d’une attaque à 51%. Contentez vous d’attendre quelques confirmations et tout ira bien!