Explication de la « double dépense »
Accueil
Articles
Explication de la « double dépense »

Explication de la « double dépense »

Intermédiaire
Publié le Feb 17, 2020Mis à jour le Jan 31, 2023
7m

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

La double dĂ©pense est un problĂšme potentiel dans un systĂšme d'argent numĂ©rique oĂč les mĂȘmes fonds sont envoyĂ©s Ă  deux destinataires en mĂȘme temps. En l'absence de contre-mesures adĂ©quates, un protocole qui ne rĂ©sout pas le problĂšme est fondamentalement vouĂ© Ă  l'Ă©chec. Les utilisateurs n'ont aucun moyen de vĂ©rifier que les fonds qu'ils ont reçus n'ont pas dĂ©jĂ  Ă©tĂ© dĂ©pensĂ©s ailleurs.

Lorsqu'il s'agit d'argent numĂ©rique, il est primordial de s'assurer que des unitĂ©s spĂ©cifiques ne peuvent pas ĂȘtre dupliquĂ©es. L'ensemble du systĂšme serait compromis si Alice pouvait recevoir 10 unitĂ©s, les copier-coller 10 fois et se retrouver en possession de 100 unitĂ©s. De mĂȘme, un tel systĂšme ne peut pas fonctionner si elle peut envoyer les mĂȘmes 10 unitĂ©s Ă  Bob et Carol simultanĂ©ment. Pour que l'argent numĂ©rique fonctionne, il doit y avoir des mĂ©canismes en place pour empĂȘcher ce comportement.


Comment éviter la double dépense ?

L'approche centralisée

L'approche centralisĂ©e est considĂ©rablement plus facile Ă  mettre en Ɠuvre que les alternatives dĂ©centralisĂ©es. Cela implique gĂ©nĂ©ralement un superviseur qui gĂšre le systĂšme et contrĂŽle l'Ă©mission et la distribution des unitĂ©s. Un bon exemple d'une solution centralisĂ©e au problĂšme des dĂ©penses doubles est celui de l'eCash de David Chaum.

Pour émettre aux utilisateurs un actif numérique imitant de l'argent (utilisable pour effectuer des échanges anonymes et pair à pair), une banque peut utiliser des signatures aveugles, comme détaillé par le cryptographe David Chaum dans son article 1982 intitulé Blind Signatures for Untraceable Payments.

Dans un tel contexte, si un utilisateur (appelons-le Dan) souhaite recevoir 100 dollars en argent numĂ©rique, il doit d'abord en informer la banque. S'il possĂšde le solde de son compte, il gĂ©nĂ©rera alors un numĂ©ro alĂ©atoire (ou plusieurs, pour les petites dĂ©nominations). Supposons qu'il produise cinq numĂ©ros, Ă  qui l'on attribue une valeur de 20 $ chacun. Pour empĂȘcher la banque de repĂ©rer des unitĂ©s spĂ©cifiques, Dan brouille les numĂ©ros alĂ©atoires en ajoutant un facteur d'aveuglement Ă  chacun d'entre eux.

Il remet ensuite ces données à la banque, qui débite son compte de 100 dollars et signe des messages certifiant que chacune des cinq piÚces est échangeable contre 20 dollars. Dan peut maintenant dépenser les fonds émis par la banque. Il se rend au restaurant d'Erin et achÚte un repas qui lui coûte 40 $.

Dan peut supprimer le facteur d'aveuglement pour exposer le numĂ©ro alĂ©atoire associĂ© Ă  chaque « billet » d'argent numĂ©rique, qui sert d'identifiant unique pour chaque unitĂ© (un peu comme un numĂ©ro de sĂ©rie). Il en rĂ©vĂšle deux Ă  Erin, qui doit maintenant les Ă©changer immĂ©diatement auprĂšs de la banque pour empĂȘcher Dan de les dĂ©penser chez un autre commerçant. La banque vĂ©rifiera que les signatures sont valides, et si tout semble correct, elle crĂ©ditera le compte d'Erin de 40 dollars.

Les billets utilisĂ©s sont maintenant essentiellement inutiles, et d'autres doivent ĂȘtre Ă©mis si Erin souhaite dĂ©penser son nouveau solde de la mĂȘme maniĂšre.

Le systĂšme eCash de Chaumian pourrait ĂȘtre utile pour les transferts privĂ©s. Mais il Ă©choue sur le plan de la rĂ©silience, car la banque est un point central de dĂ©faillance. Un billet Ă©mis ne vaut rien en soi, car sa valeur provient uniquement de la volontĂ© de la banque de l'Ă©changer contre des dollars. Les clients sont Ă  la merci de la banque, et doivent compter sur son bon vouloir pour que l'argent fonctionne. C'est prĂ©cisĂ©ment le problĂšme auquel les cryptomonnaies veulent remĂ©dier.


L'approche décentralisée

Il est plus difficile de s'assurer que les fonds ne peuvent pas ĂȘtre dĂ©pensĂ©s deux fois dans un Ă©cosystĂšme sans superviseur. Des participants de mĂȘme pouvoir doivent se coordonner autour d'un ensemble de rĂšgles qui empĂȘchent la fraude et incitent tous les utilisateurs Ă  agir honnĂȘtement.

La plus grande innovation prĂ©sentĂ©e dans le livre blanc du Bitcoin Ă©tait une solution au problĂšme de la double dĂ©pense. MĂȘme s'il n'est pas mentionnĂ© comme tel, Satoshi a proposĂ© la structure de donnĂ©es dĂ©sormais connue sous le nom de blockchain.
Une blockchain n'est en fait qu'une base de donnĂ©es dotĂ©e de certaines propriĂ©tĂ©s uniques. Les participants du rĂ©seau (appelĂ©s nƓuds) exĂ©cutent des logiciels spĂ©cialisĂ©s, ce qui leur permet de synchroniser leur copie de la base de donnĂ©es avec leurs pairs. Le rĂ©sultat est que l'ensemble du rĂ©seau peut vĂ©rifier l'historique des transactions et remonter jusqu'au bloc de genĂšse. Comme la blockchain est accessible au public, il est facile de dĂ©tecter et d'empĂȘcher les activitĂ©s frauduleuses, comme les transactions qui tentent d'effectuer une double dĂ©pense.
Lorsqu'un utilisateur diffuse une transaction, celle-ci n'est pas immĂ©diatement ajoutĂ©e Ă  la blockchain, elle doit d'abord ĂȘtre incluse dans un bloc par le biais du minage. Par consĂ©quent, le destinataire ne doit considĂ©rer la transaction valide qu'aprĂšs l'ajout de son bloc Ă  la chaĂźne. Sinon, ils risquent de perdre les fonds, car l'expĂ©diteur pourrait dĂ©penser les mĂȘmes unitĂ©s ailleurs.
Une fois la transaction confirmĂ©e, les unitĂ©s ne peuvent pas ĂȘtre dĂ©pensĂ©es deux fois, car la propriĂ©tĂ© est attribuĂ©e Ă  un nouvel utilisateur, et l'ensemble du rĂ©seau peut le vĂ©rifier. C'est pour cette raison que beaucoup recommandent d'attendre plusieurs confirmations avant de considĂ©rer un paiement comme valide. Chaque bloc ultĂ©rieur augmente considĂ©rablement l'effort nĂ©cessaire pour modifier ou rĂ©Ă©crire la chaĂźne (ce qui peut se produire lors d'une attaque de 51 %).

Reprenons le scĂ©nario du restaurant. Dan retourne au restaurant, et cette fois, un autocollant Bitcoin acceptĂ©s est prĂ©sent sur la fenĂȘtre. Il a apprĂ©ciĂ© le repas qu'il a pris la derniĂšre fois, alors il le commande Ă  nouveau. Ça lui coĂ»te 0,005 BTC.

Erin lui présente une adresse publique à laquelle il doit envoyer les fonds. Dan diffuse la transaction, qui est essentiellement un message signé indiquant que le BTC de 0,005 qui était en possession de Dan est maintenant à Erin. Sans trop de détails, toute personne présentée avec la transaction signée de Dan peut vérifier qu'il était bien en possession des fonds, et donc qu'il avait l'autorité de les envoyer.

Comme mentionné, cependant, la transaction n'est valide que si elle est incluse dans un bloc qui est confirmé. Accepter des transactions non confirmées, c'est un peu comme accepter les 40 dollars en eCash de l'exemple précédent, sans les encaisser immédiatement auprÚs de la banque ce qui permet à l'expéditeur de les dépenser ailleurs en attendant. Il est donc recommandé qu'Erin attende au moins 6 confirmations de bloc (environ une heure) avant d'accepter le paiement de Dan.


La double dépense et le Bitcoin

Le Bitcoin est soigneusement conçu pour empĂȘcher les attaques par double dĂ©pense, du moins lorsque le protocole est utilisĂ© comme prĂ©vu. Autrement dit, si des personnes attendent que les transactions soient confirmĂ©es dans un bloc, il n'y a pas de moyen simple pour l'expĂ©diteur de les annuler. Pour ce faire, ils devraient « inverser » la blockchain, ce qui nĂ©cessite une quantitĂ© irrĂ©aliste de puissance de hachage.

Toutefois, une poignĂ©e d'attaques Ă  double dĂ©pense visent des parties qui acceptent des transactions non confirmĂ©es. Pour les achats de faible valeur, par exemple, un commerçant peut ne pas vouloir attendre que les transactions soient incluses dans un bloc. Un fast-food trĂšs frĂ©quentĂ© ne peut probablement pas se permettre d'attendre que le rĂ©seau traite chaque achat. Ainsi, si une entreprise permet des paiements « instantanĂ©s », elle s'ouvre Ă  des double dĂ©penses. Quelqu'un peut commander un hamburger, le payer, puis envoyer immĂ©diatement les mĂȘmes fonds Ă  sa propre adresse. Avec des frais plus Ă©levĂ©s, cette nouvelle transaction risque d'ĂȘtre confirmĂ©e en premier, et donc d'invalider la prĂ©cĂ©dente.

Il existe trois méthodes populaires pour effectuer une double dépense :

  • Les attaques 51 % : lorsqu'une seule entitĂ© ou organisation parvient Ă  contrĂŽler plus de 50 % du taux de hachage, ce qui lui permet d'exclure ou de modifier l'ordre des transactions. Une telle attaque est trĂšs improbable sur le Bitcoin, mais s'est produite sur d'autres rĂ©seaux.
  • Attaques de course : deux transactions en conflit sont diffusĂ©es en succession, en utilisant les mĂȘmes fonds, mais une seule transaction est confirmĂ©e. L'objectif de l'attaquant est d'invalider le paiement en validant uniquement la transaction qui lui est bĂ©nĂ©fique (par exemple, en envoyant les mĂȘmes fonds Ă  une adresse qu'il contrĂŽle). Les attaques de course obligent le destinataire Ă  accepter une transaction non confirmĂ©e comme paiement.
  • Attaques Finney : un attaquant prĂ©mine une transaction dans un bloc sans la diffuser immĂ©diatement sur le rĂ©seau. Au lieu de cela, il dĂ©pense les mĂȘmes piĂšces dans une autre transaction et diffuse uniquement son bloc prĂ©cĂ©demment minĂ©, ce qui peut invalider le paiement. Les attaques Finney requiĂšrent une sĂ©quence spĂ©cifique d'Ă©vĂ©nements et sont Ă©galement soumises Ă  l'acceptation par le destinataire des transactions non confirmĂ©es.

Comme nous pouvons le voir, un marchand qui attend les confirmations de bloc réduira considérablement les risques de devenir victime de double dépenses.


Pour conclure

La double dĂ©pense permet Ă  un utilisateur de manipuler un systĂšme d'argent Ă©lectronique Ă  ses propres fins, en utilisant les mĂȘmes fonds plus d'une fois. Traditionnellement, un manque de solutions adĂ©quates au problĂšme a empĂȘchĂ© de nouveaux progrĂšs.

Heureusement, cependant, l'utilisation de signatures aveugles offre une solution intéressante pour les systÚmes financiers centralisés. Plus tard, la création des mécanismes de preuve de travail et de la technologie blockchain a donné naissance au Bitcoin, une forme de monnaie décentralisée qui, à son tour, a inspiré des milliers d'autres projets de cryptomonnaie.
Partager des publications
S’inscrire pour un compte.
Mettez vos connaissances en pratique en ouvrant un compte Binance dùs aujourd’hui.