Quel est le problème de la double dépense ?

Le problème de la double dépense est un problème potentiel dans les systèmes de paiement numérique où les mêmes fonds sont versés à deux bénéficiaires en même temps. Sans contre-mesures appropriées, le protocole à lui seul ne peut pas résoudre complètement ce problème. Après tout, les utilisateurs n'ont aucun moyen de vérifier si les fonds qu'ils reçoivent ont été versés à d'autres.

Dans le monde de l’argent numérique, il est nécessaire de garantir qu’une unité monétaire spécifique ne puisse pas être copiée. Si Alice pouvait recevoir 10 unités monétaires, les copier et coller 10 fois, puis disposer elle-même de 100 unités monétaires, tout le système s'effondrerait. De même, si elle pouvait envoyer les mêmes 10 unités monétaires à Bob et Carol en même temps, le système ne fonctionnerait pas non plus. Par conséquent, des mécanismes doivent être mis en place pour empêcher que cela ne se produise afin de garantir le bon fonctionnement des monnaies numériques.


Comment éviter le problème de double dépense ?

Approche centralisée

Les approches centralisées sont plus faciles à mettre en œuvre que les solutions décentralisées, qui nécessitent généralement un superviseur pour gérer le système et contrôler l'émission et l'émission des unités monétaires. L'eCash de David Chaum résout le problème de la double dépense grâce à une approche centralisée.​

Les banques peuvent utiliser des signatures aveugles pour émettre des actifs numériques de type espèces aux utilisateurs (ce qui peut permettre des transactions peer-to-peer anonymes). Ceci est détaillé dans l’article de 1982 « Techniques de signature aveugle pour les paiements introuvables » du cryptographe David Chaum.

Dans ce cas, si l’utilisateur Dan souhaite recevoir 100 $ en espèces numériques, il doit d’abord en informer la banque. S'il y a un solde sur son compte, un nombre aléatoire sera généré (plus si la dénomination est plus petite). Supposons que cinq nombres aléatoires soient générés, chacun valant 20 $. Pour empêcher les banques de suivre des unités monétaires spécifiques, Dan confond la situation en ajoutant un facteur aveuglant à chaque nombre aléatoire.

Il a ensuite transmis ces données à la banque, qui a déduit le solde de 100 $ de son compte et a signé le message, prouvant que chacun des cinq messages était échangeable contre 20 $. À l’heure actuelle, Dan peut utiliser l’argent numérique émis par la banque. Il est allé au restaurant d'Erin pour un repas et a dépensé 40 $.​

Dan élimine le facteur aveuglant et expose le nom occasionnel associé à chaque « billet » numérique, qui est un identifiant unique pour chaque unité monétaire (à peu près équivalent à un numéro de série). Il révèle deux des nombres aléatoires à Erin, qui doit immédiatement échanger les fonds avec la banque pour empêcher Dan de payer à d'autres commerçants. La banque vérifiera si la signature est valide et si elle est correcte, elle déposera 40 $ sur le compte d'Erin.

Les « billets » utilisés sont ensuite détruits, et si Erin souhaite utiliser le solde de son compte de la même manière, d'autres billets doivent être émis.

Le mécanisme Chaumian eCash est extrêmement précieux pour les transferts privés. Cependant, le mécanisme eCash lui-même n’a aucune résistance. Puisque les banques sont des nœuds centralisés, si le système tourne mal, tout le monde en souffrira. Les billets émis par les banques n'ont aucune valeur en eux-mêmes ; leur valeur provient entièrement de la volonté de la banque d'échanger les billets contre des dollars américains. Les clients sont soumis à la banque et doivent compter sur la réputation de la banque pour gérer leurs fonds. C’est exactement le problème que les crypto-monnaies visent à résoudre.


Approche décentralisée

Éviter le problème de la double dépense dans un écosystème sans mécanismes de surveillance est encore plus difficile. Les participants ayant un pouvoir égal doivent se coordonner selon le même ensemble de règles pour prévenir la fraude et inciter tous les utilisateurs à agir avec intégrité.

La plus grande innovation présentée dans le livre blanc Bitcoin est la solution au problème de la double dépense. Satoshi Nakamoto a proposé une structure de données sans précédent désormais connue sous le nom de blockchain.

La blockchain n’est en réalité qu’une base de données dotée de propriétés uniques. Les participants au réseau (appelés nœuds) exécutent un logiciel spécialisé qui leur permet de synchroniser leurs propres copies de la base de données entre elles. De cette façon, l’ensemble du réseau peut auditer l’historique des transactions remontant au bloc Genesis. Puisque la blockchain est visible publiquement, il sera plus facile de détecter et de prévenir la fraude, comme l’identification des tentatives de transactions à double dépense.

Lorsqu'un utilisateur publie une transaction, celle-ci n'est pas immédiatement ajoutée à la blockchain et doit d'abord être extraite avant que le bloc puisse être chargé. Par conséquent, ce n’est que lorsque le bloc est entré dans la chaîne que le bénéficiaire peut confirmer que la transaction est valide. Sinon, le destinataire risque de perdre des fonds si l'expéditeur paie le même jeton ailleurs.​

Une fois la transaction confirmée, la propriété du jeton est attribuée au nouvel utilisateur et vérifiée par l'ensemble du réseau, de sorte que les jetons ne peuvent plus être dépensés deux fois. Pour cette raison, de nombreuses personnes recommandent d’attendre plusieurs confirmations avant d’accepter un paiement valide. Chaque bloc suivant augmente considérablement la quantité de travail nécessaire pour modifier ou réécrire la chaîne (comme dans le cas d'une attaque à 51 %).

Revenons à la situation du restaurant. Dan est retourné au restaurant et a cette fois remarqué l'autocollant sur la fenêtre disant "Ce magasin prend en charge le paiement Bitcoin". Il ne pouvait pas oublier son dernier repas et a commandé à nouveau le même repas, coûtant 0,005 Bitcoins.​

Erin montre à Dan l'adresse publique, qui est l'adresse de transfert. L'annonce de la transaction par Dan est essentiellement un message signé annonçant que les 0,005 Bitcoins qu'il possède appartiennent désormais à Erin. Sans entrer dans trop de détails, toute personne voyant la transaction signée par Dan peut confirmer que les jetons sont bien les siens et que Dan a donc le pouvoir de les envoyer.

Cependant, comme mentionné précédemment, la transaction n'est valide qu'après avoir été chargée dans le bloc et confirmée. Recevoir une transaction non confirmée équivaut à recevoir 40 $ en eCash auparavant. Si elle n'est pas immédiatement encaissée par la banque, l'expéditeur peut dépenser les fonds ailleurs. Par conséquent, Erin doit attendre au moins 6 confirmations de blocage (environ une heure) avant d'accepter le paiement de Dan.


Le problème de la double dépense du Bitcoin

Bitcoin est soigneusement conçu pour empêcher les attaques à double dépense, du moins si le protocole est utilisé comme prévu. Autrement dit, si quelqu'un attend une transaction pour obtenir une confirmation de blocage, l'expéditeur ne pourra pas facilement annuler la transaction. Ce n’est qu’en « inversant » la blockchain qu’une transaction peut être annulée, ce qui nécessite d’énormes quantités de puissance de hachage.

Cependant, certaines attaques de double dépense ciblent spécifiquement les utilisateurs qui acceptent des transactions non confirmées. Par exemple, pour les petits achats, les commerçants ne veulent pas attendre que la transaction soit incluse dans le bloc. Les restaurants de restauration rapide très fréquentés ne pourront peut-être pas attendre aussi longtemps que le réseau met le traitement de chaque transaction. Par conséquent, si un commerçant active les paiements « instantanés », il peut être confronté à un problème de double dépense. Quelqu'un peut commander un hamburger et le payer, puis renvoyer immédiatement les mêmes fonds à sa propre adresse. Tant que les frais de traitement de la transaction ultérieure sont plus élevés, ils peuvent être confirmés en premier, ce qui rend la transaction précédente invalide.

Il existe actuellement trois attaques courantes de double dépense :

  • Attaque 51% : Une seule entité ou organisation parvient à contrôler plus de 50% du taux de hachage afin de supprimer ou modifier l'ordre des transactions. Il est extrêmement peu probable que ce type d’attaque se produise sur le réseau Bitcoin, mais cela s’est produit sur d’autres réseaux.

  • Attaque de course : Deux transactions contradictoires sont publiées successivement en utilisant les mêmes fonds, mais une seule transaction est confirmée. Le but de l'attaquant est d'invalider un autre paiement en validant une transaction en sa faveur. Par exemple, envoyer des fonds à une adresse qu'il contrôle. Une attaque raciale implique généralement que le destinataire accepte une transaction non confirmée comme paiement.

  • Attaques Finney : un attaquant pré-mine une transaction et la place dans un bloc, mais ne la publie pas immédiatement sur le réseau. Au lieu de cela, il a payé le même jeton dans une autre transaction avant de publier un bloc précédemment extrait, invalidant ainsi le paiement. Les conditions nécessaires pour une attaque Fenney sont que les événements se produisent dans un ordre spécifique, et le succès dépend également de l'acceptation ou non par le destinataire de la transaction non confirmée.

Comme nous pouvons le constater, les commerçants peuvent réduire considérablement leurs risques et éviter d’être victimes de doubles dépenses en attendant simplement patiemment les confirmations de blocage.


Résumer

Les utilisateurs peuvent recourir à des attaques de double dépense pour falsifier les systèmes de paiement électronique peer-to-peer et utiliser les mêmes fonds plusieurs fois pour obtenir des gains injustes. Dans le passé, parce qu’il fallait bien résoudre ce problème, le développement de ce domaine a stagné.

Heureusement, l’utilisation de signatures aveugles est devenue une solution accrocheuse dans les solutions financières centralisées. Par la suite, le développement du mécanisme de preuve de travail et de la technologie blockchain a donné naissance au Bitcoin, une forme puissante de monnaie décentralisée, qui à son tour a inspiré des milliers de projets de crypto-monnaie.