Bitcoin : comment fonctionne le double spending ?
3 février, 2022
9 min
Le double spending (doublement des dépenses) consiste à effectuer deux achats en utilisant les mêmes fonds avec l’intention manifeste de tromper le vendeur de biens ou le prestataire de services. Il s’agit d’un problème que tout système de paiement doit prendre en compte et éviter lors de sa conception. Comment le Bitcoin, dont le pouvoir d’achat rendrait le double spending très rentable, l’évite-t-il ?
Double spending : un casse-tête « génétique » pour les cryptomonnaies
Le double spending (doublement des dépenses) consiste à utiliser la même somme d’argent dans plusieurs échanges économiques distincts, alors qu’en réalité cette dépense correspondrait à un seul bien ou service ; c’est la version illégale du 2×1 au supermarché.
Bien que le problème se pose au niveau du transfert physique de valeur, il n’est pas aisé d’utiliser le même billet, ou la même pièce, pour acheter différents objets (ou services) : à moins d’avoir vraiment de la chance, un seul de tes snacks préférés sortira du distributeur automatique !
L’achat en ligne avec des monnaies fiduciaires, en revanche, est assuré par l’émetteur du système de paiement ou par le Payment Service Provider (PSP), qui se pose en médiateur et garant de la légitimité de la correspondance économique, de manière à réduire le risque de double spending.
PSP
Un Payment Service Provider, c’est-à-dire un prestataire de services de paiement, est un organisme tiers qui permet aux entreprises d’accepter des paiements par différents moyens, car il peut se connecter à la fois aux banques, aux émetteurs de cartes et à d’autres systèmes de paiement. Exemples : Google Pay, Satispay.
La fraude étant un parasite de tout système économique, le monde des cryptomonnaies, en tant que nouvelle frontière de la valeur, a également besoin d’une « désinfection ». Ici, cependant, il n’y a pas de tierce partie monopolistique, car chaque transaction a lieu « peer to peer » (p2p), directement entre le vendeur et l’acheteur, l’expéditeur et le destinataire. Dans ce système, qui empêche les tentatives de double spending ?
La solution est intrinsèque à la blockchain du Bitcoin, et pour démontrer sa solidité, nous analyserons les types d’attaques avec lesquelles un double spending pourrait être tenté.
3 attaques, une défense : la blockchain du Bitcoin
Il existe plusieurs façons de contourner le système du Bitcoin, ou d’autres blockchains, pour tenter de doubler les dépenses. En général, en essayant de remplacer le destinataire des fonds par l’adresse de son propre portefeuille, le pirate tente de récupérer les cryptomonnaies qu’il vient potentiellement juste de dépenser.
Ce mécanisme peut être réalisé de 3 façons : Race attack, attaque des 51 % et Finney attack. La blockchain du Bitcoin ne s’est cependant jamais montrée fallacieuse, se protégeant d’autant de manières : sa défense a une histoire de dix ans de victoires. On te raconte l’épopée en 3 paragraphes.
Race attack : une course de 10 minutes
Pour réaliser une Race attack, un pirate envoie deux transactions en succession rapide dans le but d’invalider la première (A) par la seconde (B) ; cette dernière contient des informations sur le transfert des mêmes fonds vers un portefeuille qui lui appartient.
Imaginons par exemple que tu veux payer dans un magasin qui accepte les bitcoins en envoyant 0,5 BTC, et que tu utilises une Race attack pour envoyer ce même 0,5 BTC à ton portefeuille.
Dans cette situation, le double spending ne pourrait être réalisé que d’une seule manière : si A n’était pas enregistrée sur la blockchain, mais écrasée par B, et que le magasin acceptait A, sans que cette dernière ne soit confirmée. C’est ainsi que le cheval B gagnerait la « course » contre A.
Le Bitcoin se protège cependant de cette éventualité : toutes les transactions, pour être certifiées et donc enregistrées sur la blockchain, doivent avoir le consentement d’au moins 51 % du réseau de nœuds validateurs qui collaborent à la maintenance de la blockchain.
Nous avons déjà décrit comment les miners préservent la sécurité de la blockchain dans l’article sur le mining. En échange de cette contribution, ils reçoivent une récompense en bitcoins pour chaque bloc créé, qui est algorithmiquement divisé en deux tous les 4 ans par le processus du Halving. La concurrence est donc très forte et plus la puissance des appareils utilisés par les mineurs augmente, plus la difficulté des problèmes cryptographiques à résoudre est importante, de manière à maintenir stable la cadence de production des blocs (un toutes les 10 minutes) et augmenter la sécurité de la blockchain.
Comment ce système de validation complexe empêche-t-il qu’un certain nombre de bitcoins soient dépensés deux fois ? Avant de fournir un bien ou un service au vendeur, il suffirait d’attendre que les informations de A soient confirmées par les nœuds.
51% attack vs Hash Rate
Discours similaire pour la 51 % attack : pour dépenser deux fois un Bitcoin, ou une fraction de celui-ci, il faudrait « réécrire » chaque bloc créé après la transaction que tu essayes de trafiquer. En effet, chaque bloc est lié au précédent et au suivant par la fonction Hash, de sorte que pour modifier ne serait-ce qu’une seule transaction, il faudrait modifier les informations de tous les blocs suivants, avec un effet de chaîne. Les blocs sont comme des enfants qui tiennent la main de leurs amis en rang : il est difficile de briser l’ordre sans se battre !
La seule façon de mettre en œuvre ce changement serait d’effectuer une 51 % attack, ce qui, comme son nom l’indique, nécessiterait le contrôle d’au moins la moitié « plus un » de la puissance de calcul du réseau (Hash Rate). Ce n’est qu’ainsi que les attaquants pourraient manipuler un bloc pour dupliquer ses transactions. Il s’agit toutefois d’une entreprise impossible à réaliser, et pas du tout rentable en termes de coûts de matériel et d’énergie. Personne n’a jamais réussi, et je ne te conseille pas d’essayer à la maison.
Finney attack vs PoW
Que se passe-t-il si un mineur, ou un nœud validateur, tente une attaque de double spending ?
Lors d’une Finney attack, un mineur préenregistre dans un bloc le mouvement d’un certain nombre de monnaies A d’un de son portefeuille à un autre, toujours en sa possession, en attendant de saisir la validation d’un bloc pour la blockchain du Bitcoin.
Un miner gagne la capacité à vérifier un bloc en utilisant l’algorithme de consensus « Proof-of-work ». Par conséquent, pour mettre en œuvre une Finney attack, lorsque le miner reçoit la priorité sur les autres nœuds de l’algorithme, il ne transmet pas le bloc pré-miné, mais envoie les mêmes cryptomonnaies A à un vendeur, pour recevoir un certain bien ou service.
Lorsqu’il reçoit ce qui est demandé, et avant que cette transaction ne soit confirmée, le miner transmet le bloc pré-miné, de manière à supplanter le premier transfert (au vendeur) par le second (à sa propre adresse).
Pourquoi est-ce peu probable, voire impossible, dans la blockchain du Bitcoin ?
Un mineur, en particulier un petit, est rarement choisi par le PoW, en raison du faible Hash Rate qu’il peut fournir.
En outre, même si ce mineur particulier est choisi, dans le temps qu’il faut au vendeur pour accepter la transaction, un bloc valide est susceptible d’être trouvé plus rapidement, ce qui rendrait alors invalide celui contenant la transaction frauduleuse.
Dès lors, le vendeur, comme pour la Race attack, n’aurait qu’à attendre la confirmation du réseau qu’il a bien reçu les cryptomonnaies, avant de libérer le bien ou service, afin d’enregistrer immuablement cette transaction dans un bloc.
De plus, le miner perdrait, ce faisant, la récompense du bloc sur lequel il avait la priorité, puisqu’il n’était pas en mesure de la transmettre « à temps » (dans les 10 minutes) : pour le moment, et jusqu’au prochain Halving, elle s’élève à 6,5 BTC, une somme considérable.
Anecdote
La Finney Attack est nommée d’après Hal Finney, la première personne à avoir reconnu le phénomène sur un forum, en plus d’être la première à recevoir un Bitcoin de Satoshi Nakamoto en personne ! Un tel événement est comparable à la remise des Tables de la Loi ; serais-tu prêt à transmettre la parole du Bitcoin ?
Mes Bitcoins sont-ils en sécurité ?
Le Bitcoin réduit le problème du double spending à une menace hypothétique, à condition que les vendeurs exploités pour cette tentative frauduleuse n’acceptent que des transactions sécurisées (c’est-à-dire confirmées par la blockchain).
Donc, en bref : oui, tes bitcoins sont à l’abri du double spending. En effet, le protocole du Digital gold a été équipé de divers mécanismes de protection lors de la phase de conception. Parmi ceux-ci nous trouvons :
- le taux fixe d’émission de monnaies (1 bloc toutes les 10 minutes) ;
- l’algorithme de consensus Proof-of-work (PoW) ;
- un mécanisme de récompense qui incite les mineurs à augmenter leur puissance de calcul, tout en maintenant la difficulté de leur travail suffisamment élevée pour sécuriser l’ensemble du réseau.