Une attaque de double dépense par réorganisation de chaîne, aussi couramment appelée attaque des 51 % ou attaque de la majorité, est une atteinte à l'intégrité de la chaîne de blocs où un acteur, grâce à l'appropriation d'une part importante de la puissance de validation, réussit à récrire la chaîne dans le but d'annuler son paiement et, par conséquent, de conserver à la fois le bien acheté et la cryptomonnaie cédée. Cette attaque concerne généralement les chaînes utilisant la preuve de travail où les blocs sont validés grâce au minage : il suffit alors à l'attaquant de disposer momentanément de la majorité de la puissance de calcul du réseau pour réaliser à coup sûr une telle double dépense.

Notez que le terme « attaque des 51 % » est parfois aussi utilisé pour décrire d'autres attaques impliquant une large portion de la puissance de validation, comme l'attaque Goldfinger ou la censure des transactions. Nous nous concentrerons ici sur l'attaque mettant en jeu une double dépense.

 

Fonctionnement normal d'une chaîne de blocs

Les cryptomonnaies se basent souvent sur une blockchain pour fonctionner, c'est-à-dire une chaîne de blocs horodatés de transactions, qui sont liés les uns aux autres par des validateurs. Cette chaîne de blocs est le registre de toutes les transcations effectuée dans la cryptomonnaie concernée.

Dans Bitcoin et les systèmes apparentés, la liaison entre chaque bloc est réalisée par ce qu'on appelle une preuve de travail : un mineur dépense de l'énergie électrique pour trouver la solution à un problème dépendant du contexte et, s'il y parvient, reçoit une récompense en bitcoins. Chaque bloc (et chaque transaction qu'il contient) est soumis à des règles, appelées règles de consensus, qui sont déterminées par le protocole et qui garantissent le bon fonctionnement du système. En particulier, l'une de ces règles est la règle très logique qui impose à une transaction de ne pas dépenser des bitcoins qui ont déjà été dépensés : la double dépense (ou double-spending) est prohibée.

Chaîne de blocs normale linéaire

Afin que le réseau conserve un consensus vis-à-vis du registre des transactions, c'est à-dire que les nœuds du réseau soient d'accord sur qui a dépensé quoi, un principe supplémentaire est respecté : le principe de la chaîne la plus longue. Ce dernier énonce que la chaîne valide est celle qui possède le plus de preuve de travail accumulée, à savoir (la plupart du temps) le plus de blocs.

C'est ce principe de la chaîne la plus longue qui permet de résoudre les conflits appelés forks ou embranchements, qui se produisent de temps à autre sur le réseau. Si vous souhaitez en savoir plus, vous pouvez lire notre article là-dessus : Qu'est-ce qu'un fork ?

Ce modèle fait donc en sorte que le réseau reste concentré sur une chaîne de blocs unique, que l'on considère comme quasiment irréversible, notamment en ce qui concerne les blocs les plus anciens : pour invalider un bloc datant d'un jour environ, il faudrait en effet recalculer une chaîne équivalente à 144 blocs, ce qui demanderait une puissance de calcul immense.

Néanmoins, il peut arriver que cela soit rentable, notamment dans le cadre de l'attaque des 51 % qui nous intéresse ici.

 

L'attaque de double dépense par les 51 %

Bien que l'attaque de double dépense par 51 % de la puissance de validation soit réalisable dans le cas de la preuve d'enjeu qui se base sur la possession de jetons ou un critère lié, elle est beaucoup moins probable dans ce cas. C'est pourquoi nous nous bornerons ici à la preuve de travail et au minage.

Comme on l'a dit, l'attaque consiste à effectuer une double dépense, ce qui est prohibé (logiquement) par le protocole, mais peut être mis en place grâce au mécanisme de consensus. Celle-ci se décompose en trois étapes.

 

Étape 1 : l'achat d'un bien

Supposons que l'attaquant a réussit à réunir plus de la moitié de la puissance de calcul du réseau lié à une cryptomonnaie. Avant de commencer à utiliser cette puissance, il procède à une transaction lui permettant d'acheter un bien à un acteur de l'écosystème dans la cryptomonnaie concernée. Typiquement, l'attaquant procédera à un virement vers une plateforme d'échange afin d'obtenir du BTC en échange d'une cryptomonnaie moins importante.

Pour que l'attaque soit rentable, il faut que le somme de la valeur du bien obtenu et de la valeur finale de la cryptomonnaie attaquée soit supérieure au coût matériel nécessaire à la mise en place de cette attaque. Ainsi, dans la réalité, ces attaques impliquent généralement des millions d'euros en cryptomonnaie.

 

Étape 2 : le minage d'une chaîne parallèle

Après avoir effectué la transaction « légitime », l'attaquant construit et signe une autre transaction, dite « frauduleuse », qui dépense les mêmes fonds que la première. Cette transaction renvoie les fonds vers lui-même.

Une fois que la transaction légitime a été confimée, c'est-à-dire incluse dans un bloc, l'attaquant se met à miner une chaîne en parallèle à partir du bloc précédent, qu'il ne dévoile pas au reste du réseau. Dans cette chaîne, il inclut la transaction envoyant les fonds à son adresse, ce qui permettra d'empêcher toute validation de la transaction « légitime ».

Attaque des 51 % : minage chaîne parallèle

Puisqu'il dispose de plus de la moitié de la puissance de calcul du réseau, il est sûr qu'à un moment ou à un autre, sa chaîne sera plus longue que la chaîne officielle, ce qui nous amène à la troisième étape.

 

Étape 3 : la réorganisation de la chaîne

Pour que son attaque soit lucrative, l'attaquant doit attendre la livraison du bien qu'il a acheté. Si l'on reprend notre exemple de la vente d'une cryptomonnaie mineure contre du bitcoin, la plateforme d'échange attendra un certain nombre de confirmations avant de permettre à l'attaquant de retirer ses bitcoins. Ainsi, l'attaquant devra miner la chaîne parallèle tant qu'un certain nombre de blocs (déterminé par la plateforme) ne sera pas passé.

Une fois en possession du bien obtenu, l'attaquant dévoile sa chaîne parallèle au réseau. Puisqu'il dispose de la majorité du taux de hachage, il le fait au moment où sa chaîne est plus longue que la chaîne concurrente.

Attaque des 51 % : réorganisation

La chaîne de l'attaquant est plus longue : par conséquent tous les nœuds du réseau doivent logiquement accepter cette chaîne comme la chaîne valide. Il se produit alors une réorganisation de la chaîne : les transactions contenues dans le blocs invalidés de la première chaîne sont remises dans la mempool, et les nouveux blocs sont vérifiés. Puisque la transaction légitime de l'attaquant vers le marchand dépense des fonds déjà dépensés par la transaction frauduleuse, elle est invalidée (en tant que double dépense).

L'attaque est réussie : l'attaquant est à la fois en possession du bien acheté et de la cryptomonnaie concernée.

Il est possible que le cours de la cryptomonnaie attaquée chute après la révélation de l'attaque. Néanmoins, dans la pratique, cela n'est pas forcément très marqué, et pour cause : l'attaque de double dépense par les 51 % ne met en péril qu'une seule transaction visée (ou un seul groupe de transactions), et pas toutes les transactions. Cela fait que le registre de propriété n'est pas modifié outre mesure, et que les fonds des utilisateurs qui n'ont pas bougé depuis longtemps ne peuvent pas être affectés. De plus, l'attaquant a souvent une raison économique de réaliser cette attaque et modifiera le moins de choses possibles pour que le cours de la cryptomonnaie reste stable.

 

Quels sont les exemples de telles attaques ?

Bien que soit virtuellement possible, Bitcoin ne s'est jamais fait attaquer et sa chaîne constitue la chaîne de preuve de travail la plus inviolable à ce niveau-là. Non seulement le coût pour procéder à une telle attaque serait astronomique, mais l'attaquant n'aurait plus aucun moyen commode pour récupérer son gain. En effet, une attaque de Bitcoin affaiblirait probablement le cours du bitcoin ainsi que tout le reste du marché des cryptomonnaies, provoquant une vague de doute. L'attaquant serait donc contraint de récupérer un bien physique ou de la monnaie fiat en échange des bitcoins impliqués dans l'attaque.

Les chaînes majoritaires étant minées par ASIC (circuit intégré spécialisé) disposent également d'un avantage : l'attaque implique une diminution du rendement de l'ASIC en question. Ainsi, Bitcoin (SHA-256), Litecoin (Scrypt) ou Dash (X11) disposent d'une sécurité supplémentaire.

Les chaînes minoritaires comme Bitcoin Cash ou Bitcoin SV (SHA-256) sont en revanche bien plus vulnérables à ce type d'attaque, même si cela ne s'est jamais produit pour l'instant, celles-ci étant protégées par des mineurs honnêtes.

Par conséquent, les chaînes les plus vulnérables sont probablement les chaînes minées par carte graphique (GPU), les cartes graphiques étant utiles quoi qu'il arrive et pouvant être facilement dirigées vers une autre chaîne après l'attaque. C'est donc ces chaînes qui ont été attaquées de la sorte dans la réalité.

Parmi les attaques des 51 % qui ont fait les gros titres, on retrouve :

  • Les deux attaques de Verge, en avril et en mai 2018, où les attaquants ont profité d'un comportement étrange de l'algorithme d'ajustement de la diffculté.
  • Les trois attaques de Bitcoin Gold, en mai 2018, janvier et juillet 2020.
  • L'attaque de Ethereum Classic en janvier 2019.

Pour vous informer sur le coût de l'attaque des 51 % de différentes cryptomonnais, rendez-vous sur crypto51.app.

 

Comment y remédier ?

La première manière d'empêcher les attaques des 51 % est simplement de rendre le minage plus décentralisé. Comme on le sait, les mineurs des plus grosses cryptomonnaies s'associent en coopératives (pools) afin de lisser leurs revenus. Il faut donc faire en sorte que le nombre de coopératives soit plus grand, et que le pouvoir des dirigeants de ces coopératives sur ce que minent leur client soit moindre (c'est par exemple l'esprit derrière Stratum V2).

pourcentage hashrate détenu par les pools de minage

Une autre méthode est l'ajout de points de contrôle (checkpoints) ponctuels dans le code afin de fixer un bloc « en dur » dans le protocole et empêcher une réorganisation de plusieurs milliers de blocs. De tels points de contrôle ont par exemple été implémentés dans Bitcoin Core par Satoshi Nakamoto lui-même, lorsque Bitcoin était encore vulnérable.

Cette méthode est également utilisée de manière plus soutenue par Bitcoin Cash : plusieurs implémentations (Bitcoin ABC et BCHN) appliquent en effet une protection contre la réorganisation qui invalide toute réorganisation de plus de 10 blocs.

Enfin, une troisième façon de limiter ce type d'attaque est tout simplement le passage à la preuve d'enjeu, tel que l'envisage Ethereum par exemple. Cela s'explique par le fait qu'une attaque de double dépense telle qu'on l'a décrite décrédibilise la cryptomonnaie en question et fait baisser son cours, et fait donc baisser la valeur des jetons de l'attaquant (qui en dispose plus de 50 %). Bien que cette baisse ne soit pas forcément très significative, la rentabilité d'une telle attaque est donc profondément impactée par cette propriété.

 

Cet article vous a aidé ❤ ? N'hésitez pas à nous le faire savoir en attribuant une note ou en nous laissant un commentaire 🙂

Merci à Marco pour sa participation à l'article.

Avis des lecteurs
[Total : 6   Moyenne : 4.8/5]

A propos de l'auteur : Ludovic Lars

twitter-soothsayerdatatwitter-soothsayerdata

Je suis fasciné par les cryptomonnaies et par l’impact qu’elles pourraient avoir sur nos vies. De formation scientifique, je m’attache à décrire leur fonctionnement technique de la façon la plus fidèle possible. Sur Cryptoast, je me propose de vous aider à mieux comprendre comment fonctionnent les cryptomonnaies (principalement Bitcoin, Bitcoin Cash et Ethereum) et quels sont les enjeux qui animent cet écosystème fascinant.
Tous les articles de Ludovic Lars.

guest
2 Commentaires
Inline Feedbacks
View all comments
Ben

Bonjour merci pour votre article
Dans le paragraphe "état actuel du réseau", le lien https://blockchain.info/fr/pools est mort

Robin Berné

Merci pour l’info, voici un autre lien : https://www.blockchain.com/fr/pools
Nous allons mettre à jour l’article 🙂