Comment perdre des bitcoins !

in #fr7 years ago

Ceci est une copie de mon article « Comment perdre des bitcoins ! » sur Linkedin. Je le copie tel quel sans correction ou mise à jour depuis le 12 septembre 2017, date de sa rédaction.

L'utilité première de cet article est bien entendu d'aider le lecteur à conserver ses bitcoins. Au delà les pertes de bitcoins (la notion peut-être étendues aux tokens des autres crypto-monnaies) ont un impact dans l'estimation de l'importance de Bitcoin car elle est bien souvent calculée à la manière de la capitalisation boursière des entreprises en multipliant le cours du moment par le nombre de bitcoins minés. Ce calcul est faux car il considère que tous les bitcoins minés peuvent-être utilisés alors que beaucoup sont perdus.

Nous commencerons par les classiques : la perte, le vol et la mort. Nous verrons par la suite des problèmes plus techniques : la non récupération de la monnaie et le fractionnement.

En perdant les clés privées

Le moyen le plus évident de perdre des bitcoins est de perdre les clés privées permettant de les dépenser (un cas est devenu célèbre : https://www.theguardian.com/technology/2013/nov/27/hard-drive-bitcoin-landfill-site). Bien entendu il existe beaucoup de variantes, du simple effacement de fichiers, au crash du disque en passant par le formatage, la corruption du système de fichiers et la ré-installation d'un système.

Solutions

Comme d'habitude en informatique il faut faire des sauvegardes. Si vous utilisez Bitcoin-QT, le client graphique de Bitcoin Core, le fichier à sauvegarder est « wallet.dat » (sous Linux il se trouve dans le répertoire « ~/.bitcoin »). Une autre solution, proposée maintenant par défaut par Bitcoin Core et Électrum, est de générer des clés de façon déterministe à partir d'une graine de 16 octets : la sauvegarde de cette graine, qui peut être représentée par une douzaine de mots, suffit donc pour reconstituer toutes les clés utilisées.... Ceci tant que les clés sont générées à partir de la même graine or si vous décider de crypter votre portefeuille, une nouvelle graine sera générée et utilisée. Préparez tout de suite un mot de passe et cryptez dès le début votre portefeuille !

Le vol

Naturellement si une personne mal-honnête (et suffisamment compétente) trouve vos clés privées elle vous volera vos bitcoins. Il faut donc éviter de les mettre à disposition du « public ». Sauf cryptage fort (et alors il vous faudra trouver une sauvegarde pour la clé de décryptage), le stockage dans les « nuages » est à proscrire : l'hébergeur (et ses amis de la NSA) a accès à vos données (et c'est bien pour cela qu'il vous « offre » cet espace).

Il y a quelques années a circulé l'histoire d'un médecin qui a eu la mauvaise idée de sauvegarder des photos professionnelles sur un service de ce type, malheureusement sa spécialité concernait des régions du corps classées « pornographiques » : il a perdu ses données au nom des conditions d'utilisation et de la morale publique bien qu'il n'entendait pas les mettre à disposition du public sous cette forme.

Les bitcoins volés ne sont perdus que pour la personne volée. Leur prise en compte dans l'importance économique de Bitcoin est légitime car, le voleur en disposant, ils restent disponibles pour des transactions futures (quoique certains projets de lutte contre les activités illégales peuvent finir par bloquer le produit de certains larcins, voir la vidéo ci-dessous)

Solutions

Les solutions sont en gros les mêmes que pour votre carte bleue : si vous gardez vos bitcoins via un logiciel il vous faut crypter votre portefeuille et faire que personne n'aie votre mot de passe comme pour le code de carte bleue. Si vous utilisez une sauvegarde papier : gardez-là à l'abri des regards comme le trigramme à l'arrière de votre carte bleue (que vous avez gratté bien-entendu).

En mourant

Alphabet n'ayant pas résolu ce problème, nous sommes mortels. Il est évidant que si personne ne sait que vous avez des bitcoins, personne ne cherchera à les récupérer et ils ne serviront plus à personne. Si vous voulez éviter cela (ce qui n'est en rien une obligation) il faut que vous prévoyez un moyen pour qu'ils puissent être récupérer par ceux à qui vous souhaitez les léguer sans que ceux-ci puisse vous trahir...

Solution

Là, je n'ai rien de sûr à proposer : le côté « sauvage » du bitcoin fait que vous ne pouvez en confier la garde à la collectivité (comme c'est le cas, au final, d'un compte bancaire). Une solution est de confier des parties des clés privées complémentaires à plusieurs personnes. Vous pouvez bien entendu faire que chaque partie soit indispensable mais c'est ignorer que vos amis aussi sont mortels : il faut que l'un d'eux puisse manquer à l'appel. En confiant à trois amis trois copies des clés trouées à 3 endroits différents (ne se chevauchant pas mais au contraire en laissant des espaces communs ; les clés privées sont très longues, il y a de la place pour ce type de manœuvre) ainsi 2 de vos amis pourrons récupérer les fonds quelque soit l'absent. Le système peut pratiquement être compliqué à volonté pour permettre l'accès aux fonds à 2 ou 3 parmi 4 ou 5.

La non récupération de la monnaie

Pour comprendre ce problème il faut bien comprendre le fonctionnement des transactions bitcoin : elles utilisent l'intégralité des fonds apportés par une ou plusieurs transaction(s) antérieure(s) et vous restitue la « monnaie » dans un de vos compte. La complication vient du fait que la grande majorité des portefeuilles bitcoin (Bitcoin Core notamment) utilisent pour cela un nouveau couple clé publique – clé privée. Donc si vous prenez un nouveau client, importez votre clé depuis une sauvegarde papier, payez un tiers et, enfin, effacez les clés sur votre disque en ayant pleinement confiance dans votre sauvegarde papier : vous aurez perdus votre monnaie qui ne sera plus associée à votre couple clé publique – clé privée initial.

Par fractionnement

Ce moyen de perdre des bitcoins à la différence des précédents n'implique pas une mauvaise gestion des clés privées : il est lié aux frais de transaction. Dans Bitcoin, les frais de transaction ne sont pas proportionnels à la somme envoyée mais à la complexité de la transaction. Économiquement c'est une rémunération logique pour les mineurs : chaque octet de plus complique un peu le calcul des check-sums mais la somme transférée n'importe pas. Les frais minimaux de transaction sont d'un satoshi l'octet (un bitcoin = 100 000 000 satoshi). Les identifiants de transaction faisant 32 octets, tout crédit inférieur à 32 satoshis est irrémédiablement perdu car son intégration à une transaction coutera plus qu'elle apportera. En testant un peu avec le client Bitcoin Core la limite actuelle serai en fait de 180 satoshis (peut-être un peu moins avec un client utilisant Segwit).

Combien de bitcoins sont coincés par ce phénomène ? J'ai personnellement deux transactions auprès de faucets de 4 et 169 satoshis. En remontant le fil de la première transaction on trouve 30 satoshis irrécupérables (https://blockchain.info/address/1FGpvTA49Rg2q8kZZMTDuPALSgtKKCYvdF). Une courte exploration m'a permis de repérer une petite centaine de satoshis ainsi perdus.