Tout sur le Bitcoin et les Altcoins

Tout sur le Bitcoin et les Altcoins

Anatomie d’une attaque de Blockchain avec prise de contrôle de 51%

En tant que crypto enthousiaste, vous avez peut-être déjà entendu parler de la récente attaque sur le Bitcoin Gold, un fork du Bitcoin. Les attaquants ont réussi à dérober des BTG en utilisant une certaine forme d’attaque par double dépense.

Anatomie d’une attaque de Blockchain avec prise de contrôle de 51%

A la lecture de cette courte introduction, une question vient tout de suite à l’esprit : comment cela a pu être possible ? Tout le génie de la Blockchain Bitcoin réside dans sa capacité à se prémunir de ce type d’attaques par double dépense. Nous avons vu précédemment comment le Bitcoin arrive à se prémunir de ce problème de la double dépense. Cependant, cela n’est possible qu’à certaines conditions bien précises sur la Blockchain Bitcoin. Dans ce qui suit, nous allons voir comment cette attaque est possible si ces conditions ne sont pas réunies et comment s’en prémunir.

Qu’est-ce que la double dépense ?

Dans tout système électronique d’échanges, le problème de la double dépense des tokens vient à se poser. Quand quelque chose est digital, cela signifie qu’il peut être copié et qu’on ne peut pas distinguer la copie de l’original. La double dépense signifie donc simplement qu’une personne va copier un actif numérique et essayer de dépenser l’original et la copie auprès de différents vendeurs. Dans le but de prévenir ce type d’attaque, vous devez être en capacité d’être sûr que le token ne peut être dépensé qu’une et une seule fois.

Gestion du problème de la double dépense avec le Bitcoin

Il y a deux possibilités d’attaquer ce problème : de manière centralisée ou de manière décentralisée. Dans un système centralisé, chacun doit s’enregistrer auprès d’un tiers de confiance qui sera chargé de garder un registre des actifs et de garantir qu’aucune double dépense n’est possible. Un bon exemple de ce type de système est le registre central des actions, qui tient à jour l’ensemble des propriétaires d’actions d’une société.

Ainsi, si je souhaite vendre une action Apple à Adam, le registre va tout d’abord vérifier que j’ai bien au moins une action Apple. Ensuite, il va retirer une action de mon total d’actions Apple et augmenter le total d’actions possédées par Adam au sein d’une seule et unique transaction. Je ne pourrai donc pas vendre cette même action à une autre personne.

Mais au sein d’un système décentralisé comme la Blockchain Bitcoin, comment cela va-t-il se passer ? Il y a 3 éléments principaux à considérer :

  1. Chacun peut voir l’ensemble des transactions et chacun peut vérifier que la transaction est valide d’un point de vue cryptographique.
  2. L’ordre des transactions est déterminé par la chaîne de blocs qui ne cesse de grandir au fur et à mesure du temps et qui va lier les blocs entre eux de manière cryptographique. Le bloc 1 est ainsi garanti d’avoir été validé avant le bloc 2 et ainsi de suite. Et cette chaîne de blocs ne peut être falsifiée dès qu’un nouveau bloc arrive. Pour résumer, il est impossible de remplacer une transaction d’un bloc de la Blockchain sans changer l’ensemble des blocs déjà enregistrés.
  3. Tenter d’échanger un bloc est une opération extrêmement coûteuse. En effet, un bloc valide ne peut être généré que via le processus de minage qui nécessite une très importante puissance de calculs et donc d’énergie in fine.

Ce concept révolutionnaire a été imaginé par Satoshi Nakamoto et exposé en Octobre 2008 pour la première fois dans son whitepaper sur le Bitcoin. Il fut alors le premier à proposer une solution viable au problème de double dépense au sein d’un système d’échanges digital décentralisé.

Pourquoi parle-t-on de 51% ?

Le ratio de 51% renvoie à une situation où un mineur contrôle plus de la moitié de la puissance totale de hash rate disponible au sein d’une Blockchain basée sur la Proof of Work. Cela signifie qu’une seule et même entité dispose donc de plus de puissance de calculs que l’ensemble des autres ordinateurs du réseau mis bout à bout.

Ceci n’est pas forcément dangereux. Après tout, ce mineur ne peut pas générer de transactions valides impliquant des adresses qu’il ne contrôle pas. Il ne pourra donc pas voler vos Bitcoins car il ne pourra pas retrouver votre clé privée. Le mineur peut seulement décider d’inclure ou non des transactions spécifiques dans un bloc. Cependant, la situation peut être exploitée et c’est ce qui s’est passé pour le Bitcoin Gold notamment.

Montage d’une telle attaque

On vient donc de voir que le mineur ne peut voler d’argent en générant des transactions. Comment peut-il donc faire pour profiter sa prise de contrôle de 51% de la puissance de calculs du réseau ? S’il n’y a pas d’informations vérifiées sur la manière dont les attaquants ont agi sur la Blockchain de Bitcoin Gold, je vais m’aventurer à imaginer comment une telle attaque a pu être menée.

Le Hash Rate a triplé alors que le Bitcoin chute

Le premier prérequis est lié au mineur malicieux. Ce dernier doit avoir constamment le contrôle de plus de 50% de l’ensemble de la puissance de calculs sur la Blockchain qu’il souhaite attaquer. Plus sa main mise sur la puissance de calculs sera importante, plus il y aura de chances que l’attaque réussisse. En théorie, 51% du contrôle est suffisant mais à condition que cela puisse être maintenu sur des périodes de temps assez longues.

A un certain point dans le temps, disons au niveau du bloc 500000, le mineur commence à miner des blocs en privé en utilisant la majorité de la puissance de calculs qu’il a à disposition. Il ne publie pas ces blocs sur le réseau principal. Les blocs peuvent être vides ou remplis de transactions, cela n’a pas d’importance dans le cas présent.

Au même moment, le mineur va déposer un montant significatif sur une plateforme d’échanges. Considérons qu’il dépose 100 BTG depuis son adresse A, via le réseau principal, au sein du bloc 500001. L’échange attendrait habituellement plusieurs confirmations. En d’autres termes, il va attendre les blocs minés après le bloc au sein duquel la transaction a été embarquée. On va considérer que l’échange va attendre pour 10 confirmations car c’est ce qui se fait généralement dans le monde des Altcoins. Nous sommes donc au bloc 500011 sur le réseau principal à ce moment-là.

Le dépôt a bien été confirmé et le mineur va maintenant échanger ses BTG contre des BTC ou n’importe quelle autre crypto monnaie de son choix. Une fois l’échange réalisé, il fait un retrait immédiat depuis la Blockchain Bitcoin. Nous sommes maintenant au bloc 500012. Le mineur va maintenant devoir tendre le piège.

Puisque le mineur contrôle la majorité de la puissance de hash rate, sa chaîne privée, sur laquelle il a miné des blocs en secret, est plus longue que le bloc 500012 du réseau principal. Comme dit précédemment, les blocs peuvent être vides, mais le mineur va devoir inclure à minima une transaction. Celle par laquelle il transfère 100 BTG depuis l’adresse A vers une autre adresse qu’il contrôle. Il s’agit de la transaction de double dépense, puisque les coins de l’adresse A ont déjà été dépensés quand les fonds ont été envoyés à l’échange.

Le mineur va maintenant devoir soumettre tous les blocs qu’il a minés secrètement sur sa chaîne privée vers le réseau principal. Puisque sa chaîne de blocs est plus longue que celle du réseau principal (il peut être au bloc 500014 par exemple), elle est automatiquement acceptée par les autres noeuds du réseau comme la bonne version de la Blockchain. Toutes les transactions situées entre le bloc 500001 et le bloc 500012 sont donc invalidées et retournées au mempool. Ceci inclut également la transaction transférant de l’argent depuis l’adresse A vers l’échange. Mais, comme il y a déjà une transaction de l’adresse A vers une autre adresse dans la nouvelle version valide de la chaîne, celle-ci est marquée comme une tentative de double dépense et est donc rejetée.

L’échange n’a donc pas les 100 BTG en sa possession, puisque la transaction a été annulée, et ce n’est également pas sur la Blockchain Bitcoin puisque le mineur malicieux a tout retiré avant que l’attaque ne devienne publique. Il vient donc de réussir à dérober l’équivalent de 100 BTG !

Prévention

Nous arrivons donc maintenant à la partie triste de l’affaire. Il n’y a actuellement pas grand-chose que les échanges puissent faire pour se prémunir de ce type de vols. Ils peuvent seulement rendre ce type d’attaques plus difficile mais au détriment des utilisateurs puisque cela implique de rajouter des étapes de validation supplémentaires.

Les échanges peuvent augmenter le nombre de confirmations qu’ils exigent avant de considérer un dépôt comme valide. Cela augmenterait de facto le temps d’attente avant validation pour les utilisateurs honnêtes naturellement.

Une autre protection souvent utilisée consiste à retarder les retraits. SI l’échange n’avait pas permis le retrait directement après l’échange du Bitcoin, il aurait pu refuser le retrait plus tard et le mineur malicieux n’aurait rien pu retirer. Une fois encore, cela se fait au détriment des utilisateurs légitimes.

Les échanges peuvent également surveiller les chutes soudaines de la puissance de hash rate sur le réseau. Celle-ci pouvant être causée par un mineur commençant à miner sur sa chaîne privée avec plus de la moitié de la puissance de hash rate disponible. Cette détection ne serait cependant pas efficace dans les cas où le mineur mine d’autres crypto monnaies et commence à miner sur sa chaîne privée immédiatement après avoir changé de crypto monnaie.

Le Bitcoin est-il à l'abri ?

Si le Bitcoin Gold, un fork du Bitcoin est vulnérable à ce type d’attaque, le Bitcoin en est-il à l’abri ? Fort heureusement, la réponse est oui ! Le problème avec le Bitcoin Gold est le même que celui touchant de nombreux autres petits Altcoins. Il vient du fait que Bitcoin Gold partage le même algorithme de consensus avec un réseau beaucoup plus grand.

Hack du Bitcoin Gold

En effet, Bitcoin Gold s’appuie sur Equihash, le même algorithme utilisé par la crypto monnaie beaucoup plus populaire Zcash. Ainsi, si un mineur contrôle 10% de la puissance de calculs de Zcash, que la puissance de calculs totale du réseau Zcash est de 1000 et que la puissance de calculs totale du réseau Bitcoin Gold est de 50, il peut soudainement orienter sa puissance de calculs de Zcash vers la Blockchain Bitcoin Gold pour prendre le contrôle de 66% de la puissance de calculs de cette dernière. Dans un tel scénario, Zcash est en sécurité mais le réseau plus petit ne l’est clairement pas.

Le même problème peut se poser pour n’importe quelle crypto monnaie utilisant l’algorithme de la Proof of Work comme le Bitcoin. Un mineur contrôlant par exemple 1% de la puissance de hash rate totale du Bitcoin peut prendre complètement le contrôle de petites crypto monnaies. Naturellement, il faut voir si le jeu en vaut la chandelle car le mineur va alors perdre les récompenses qu’il obtient en minant des Bitcoins durant le temps où il aura orienté sa puissance de calculs vers la plus petite crypto monnaie.

C’est probablement ce qui s’est produit dans le cas de Bitcoin Gold. Si un acteur important commence à accumuler de la puissance de hash sur un réseau aussi important que le Bitcoin ou Zcash, les autres utilisateurs vont le remarquer rapidement. La même situation s’était produite sur la Blockchain Bitcoin il y a quelques années de cela et avait été résolue très rapidement de manière juste. En effet, les mineurs avaient alors réalisé que si quelqu’un détenait plus de 51%, cela déstabiliserait l’écosystème en entier et leurs investissements conséquents dédiés au minage perdraient alors de leur valeur.

C’est pourquoi le Bitcoin est, à l’heure actuelle, la crypto monnaie la plus sécurisée et de loin. Simplement parce qu’elle est plus difficile à influencer que les autres. La grande leçon à tirer de tout cela est que si vous investissez dans des Altcoins, vous devriez prendre garde à l’algorithme de consensus utilisé et notamment s’ils recourent à la Preuve de Travail. Si c’est le cas, il sera nécessaire d’ajuster le nombre de confirmations à attendre avant de considérer un bloc comme valide.

Partager