Ceci est une traduction/adaptation issue d’un article anglophone. J’ai sciemment omis ou modifié certains passages pour essayer de rendre le tout plus digeste – même si c’était un peu perdu d’avance ^^.

Voir : l’article original (en)

Cet article tente de mieux faire comprendre comment fonctionne une transaction bitcoin, en particulier le principe du « retour de monnaie » ou  « change » en version originale.

Comment fonctionne vraiment une transaction Bitcoin ?

Pour comprendre le système de « retour de monnaie » des transactions bitcoins imaginons-nous dans une épicerie avec une carte de crédit :

Vous avez terminé vos courses et vous vous présentez à la caisse. Le vendeur vous fait le total (25€ par ex.) et vous tend le terminal de paiement, vous sortez votre carte, comme d’habitude. Mais vous remarquez que le montant indiqué sur l’appareil équivaut au solde de votre compte (100€ par ex.) et que celui-ci sera donc vidé.

Pour vous rendre votre monnaie (75€) le caissier vous propose 3 solutions :

  1. l’envoyez sur votre compte actuel,
  2. l’envoyer sur un nouveau compte,
  3. ne rien faire auquel cas c’est la société qui gère le terminal de paiement qui la récupère.

Quand vous envoyez des bitcoins, la transaction vide le solde de l’adresse expéditrice. Lorsque le montant à envoyer est inférieur au solde de l’adresse, la transaction doit fournir au réseau une nouvelle adresse pour envoyer la « monnaie » restante (ce qu’on appelle une « change address »). Tout ce qu’il reste de la transaction (qui n’a pas été envoyé ni au destinataire ni à la change address) est déclaré en frais et payé au réseau.

Les « change address » et les porte-monnaies

Cette fonctionnalité est intégré dans le coeur de Bitcoin, mais les développeurs de porte-monnaies ont plusieurs façons de l’implémenter. Actuellement quatre co-existent, chacune ayant des niveaux de confidentialité et de sécurité différents.

  • Porte-monnaie à adresse unique : une seule adresse est utilisée pour les paiements et le retour de monnaie. Blockchain.info propose, entre autres, cette fonction.
  • Porte-monnaie à multi adresses : vous démarrez avec un certain nombre (fini) d’adresses générées aléatoirement. Lorsqu’un paiement est envoyé depuis une adresse, une seconde est utilisée pour recevoir le retour de monnaie. Le logiciel de base Bitcoin-Qt fonctionne de cette manière.
  • Porte-monnaie à adresses déterministes : ils utilisent un nombre théoriquement infini d’adresses générées depuis une adresse « maîtresse ». Un certain nombre de ces adresses est réservé aux retours de monnaie. Exemple avec Electrum ou Armory.
  • Porte-monnaie hybride : en fonction du contexte ils utilisent plusieurs de ces possibilités. Exemple : Mycelium.

Comment est-ce que le principe de « change address » peut être assimilé, voire devenir une perte ou un vol de bitcoins ?

Se prémunir d’erreurs à cause des « change addresses »

Une utilisation incorrect des « change adresses » peut conduire à des désastres tels que la perte totale de vos fonds, voici quelques scénarios et des solutions pour éviter le pire.

1. Sauvegarde corrompue

Monique utilise Bitcoin-Qt. Elle sait l’importance de faire des sauvegardes et a donc créé il y a longtemps un porte-monnaie chiffré et l’a stocké dans un endroit sûr. Après avoir effectué des dizaines de transactions, son disque dur rend l’âme.

Monique en achète un nouveau et réinstalle Bitcoin-Qt puis restaure le porte-monnaie qu’elle avait sauvegardé. Et là c’est le drame, Monique découvre que sa sauvegarde contient un porte-monnaie vide.

Explication : La sauvegarde de Monique ne contenait que les 100 premières adresses générées par le logiciel. Lors de sa centième transaction, ce dernier a généré une nouvelle réserve de 100 adresses. Le retour de monnaie de sa dernière transaction a été effectué sur l’une de ces adresses, rendant sa sauvegarde obsolète.

Restauration : même lorsqu’un disque dur ne peut plus lancer le système d’exploitation il est très souvent possible de lire son contenu en utilisant des logiciels de restauration de données. Il est donc possible de récupérer une version du wallet.dat plus actuelle que la sauvegarde et donc de retrouver les bitcoins perdus.

Prévention : 

  • Faites une sauvegarde toutes les 100 transactions au maximum.
  • Configurez bitcoin pour qu’il augmente le nombre d’adresses dans la réserve (paramètre -keypool).
  • Utiliser un porte-monnaie déterministe.

2. Surveiller son solde

Jean-Paul utilise Electrum pour effectuer des transactions de temps en temps. Ayant peur d’être un jour volé, il souhaite pouvoir vérifier régulièrement son solde depuis plusieurs appareils.

Il décide d’utiliser Blockchain.info pour surveiller les mouvements sur son adresse bitcoin, son porte-monnaie Electrum contient plusieurs adresses mais une seule contient des bitcoins (0.3 BTC). Pensant que seule cette adresse était utilisée il la colle dans la recherche de blockchain.info et place l’url de résultat dans ses favoris.

Quelques semaines plus tard Jean-Paul achète un nouveau clavier sur TigerDirect.com pour 0.2BTC et paye avec son porte-monnaie Electrum. Après avoir reçu son colis il décide de vérifier son solde bitcoin.

Surpris, il s’aperçoit que ses bitcoins restants (0.1 BTC) ont été transférés sur une adresse inconnue sans son autorisation. Pensant que son ordinateur a été compromis, il formate celui-ci.

Explication : Bien que pour Jean-Paul il semble clair qu’un logiciel espion a modifié la transaction avant qu’elle soit envoyé à TigerDirect.com, il s’agit en fait d’un comportement tout à fait normal de Bitcoin. L’adresse utilisée pour envoyer les bitcoins a été vidée et c’est la seule qu’il surveillait.

Restauration : Electrum conseille de stocker une passphrase secrète dans un endroit sûr et Jean-Paul devrait être en mesure de l’utiliser pour regénérer son porte-monnaie et ainsi retrouver la monnaie de sa transaction envoyée à TigerDirect.com.

Prévention :

  • Utiliser un porte-monnaie déterministe et créer un porte-monnaie en mode lecture seule (watch-only) pour le surveiller.
  • Si vous utilisez Bitcoin-Qt vous devez mettre à jour manuellement la liste des adresses que vous voulez surveiller après chaque paiement.

3. Envoi depuis un porte-monnaie papier

Antoine est un épargnant. Il a acheté il y a quelques années 20 bitcoins à $10 pièce et les a transférés sur un porte-monnaie papier créé sur bitaddress.org. Il ne les a pas touché depuis.

Un jour il souhaite profiter d’une offre spéciale sur Overstock.com et décide d’utiliser l’un de ses bitcoins épargnés. Le souci est qu’il doit importer son porte-monnaie papier sur un logiciel afin de pouvoir dépenser son bitcoin.

Il télécharge donc Multibit et importe la clé privée située sur le porte-monnaie papier, paye Overstock et ferme le logiciel.

Comme il ne souhaite pas avoir de trace de sa clé privée sur son ordinateur il supprime le logiciel ainsi que le dossier contenant les données du logiciel.

Quelques semaines plus tard il vérifie le solde de son porte-monnaie papier et se rend compte qu’il est nul et que les 19 BTC censés rester après la transaction ont été envoyés à une adresse inconnue le même jour que le paiement Overstock.

Explication : Antoine pense avoir été volé mais en fait il est témoin du comportement normal d’une transaction. Les 19 BTC manquants on été envoyés sur une « change address » de son Multibit, laissant le porte-monnaie papier vide.

Restauration : ayant supprimé le dossier contenant les données de Multibit, Antoine a perdu toute chance de pouvoir récupérer ses fonds.

Prévention :

  • avant de supprimer un « hot wallet » (comprenez un porte-monnaie relié à une connexion Internet), n’oubliez pas de transférer votre nouveau solde sur votre porte-monnaie papier.
  • Utilisez un porte-monnaie qui est capable de transférer votre retour de monnaie sur votre porte-monnaie papier, comme Mycelium.

4. Partager un porte-monnaie

Loïc utilise Bitcoin-Qt sur deux ordinateurs, son pc portable dans le salon ainsi que son ordinateur dans son bureau. Afin de pouvoir effectuer des paiements depuis les deux appareils il fait une copie du wallet.dat de son pc portable vers son ordinateur fixe.

Après avoir pu effectuer des paiements depuis les deux machines, il se rend compte un jour de quelque chose de bizarre. Son solde sur l’ordinateur portable indique zéro tandis que celui de son ordinateur fixe indique le solde correct.

Explication : Le réseau de Loïc n’est pas compris, et il n’a pas non plus découvert un bug dans Bitcoin. En fait le Bitcoin-Qt installé sur son ordinateur fixe a simplement généré une nouvelle réserve d’adresses, qui n’est pas sur celui du pc portable.

Restauration : se rendre compte qu’il ne s’agit ni d’un bug ni d’une attaque.

Prévention : 

  • N’utilisez pas Bitcoin-Qt pour partager votre porte-monnaie sur plusieurs appareils. Electrum et Armory ont été eux développés spécialement pour faire face à ce genre d’utilisation.

5. Vol depuis un porte-monnaie papier

Christophe a reçu un porte-monnaie papier contenant 2 BTC en cadeau lors d’un événement organisé par l’entreprise où il travaille. Pour tester, il installe Multibit sur son ordinateur et importe la clé privée du porte-monnaie papier. Ne voyant pas d’utilité à conserver ce papier, il le jette dans la poubelle de son bureau.

Après avoir dépensé tous ses bitcoins, il décide d’en acheter 2 de plus sur une plateforme d’échanges et les transfère sur son Multibit.

Peu de temps après, il effectue une transaction de 0.1BTC sur un site de vente en ligne mais se rend compte qu’une transaction de 1.9BTC qu’il n’a pas autorisée vient d’être effectuée, vidant son porte-monnaie.

Explication : Franck a été victime d’un vol, cependant le vol n’a pas été fait depuis son ordinateur mais depuis le porte-monnaie papier qu’il a jeté dans la poubelle.

Ce qu’il ne sait pas c’est que celui-ci a été récupéré par Bertrand, un collègue malhonnête. Bertrand a importé le porte-monnaie papier sur un logiciel personnalisé qui transfère automatiquement tout nouveau dépôt sur une autre adresse.

Multibit, fonctionnant normalement, a utilisé le porte-monnaie papier importé pour déposer le retour de monnaie issu de la transaction sur le site de vente en ligne. Le programme de Bertrand a détecté ce nouveau dépôt et a donc automatiquement transféré les 1.9BTC sur une autre adresse.

Bertrand n’a pas eu besoin d’avoir accès au PC de Franck pour commettre son vol, il a simplement suffit qu’il ait en sa possession la clé privée de l’adresse qui allait recevoir le retour de monnaie après une transaction.

Restauration : Franck ne peut ni récupérer son argent ni même savoir qui est le voleur.

Prévention :

  • Lorsque vous importez un porte-monnaie papier assurez-vous de « fusionner » (le terme anglais utilisé pour cette action est « sweep ») celui-ci avec le porte-monnaie logiciel de sorte que l’adresse du papier soit vidée et que les fonds soit transférés, via le réseau, sur votre autre adresse. C’est particulièrement important lorsque ce n’est pas vous qui avez généré le porte-monnaie papier.

Conclusions

La fonction « change address » ou retour de monnaie permet d’améliorer la protection de l’identité de l’expéditeur d’une transaction et en particulier empêche de pouvoir facilement faire un historique des transactions effectués par une seule adresse. Mais comme vous l’avez vu elle peut aussi provoquer des pertes parfois irrémédiables.

Pour éviter tout problème il est important non seulement de comprendre comment fonctionne Bitcoin, mais également et surtout, comment fonctionne le logiciel porte-monnaie que vous utilisez.

Partager
Article précédentAcheter des bitcoins sur Wex
Article suivantComment créer une adresse Bitcoin personnalisée ?

Maxime, aka votre « Conseiller » sur achat-bitcoin.fr est un early adopter du Bitcoin depuis 2011. D’abord intéressé par la technologie, du minage à l’unité de compte, il a passé de très longues heures à en apprendre plus sur la blockchain et le principe de monnaie décentralisée. Habitué des places de marché et de l’utilisation des crypto-monnaies, je souhaite par ce site Internet aider à la démocratisation des monnaies comme le Bitcoin, Litecoin ou Peercoin.
Dons BTC : 1Maxime5w2BGvorFG2BRtU9JjPomMfgaJ5

Une réaction

  1. Bonjour
    Je ne savais pas qu’il fallait faire des sauvegardes
    Je croyais qu’avec le seule adresse et mot de passe il suffisait de récupérer son solde inscrit dans la constellation blockchain

Commenter

Commentaire vide !
Entrez votre nom