Securisation et stockage à froid des Bitcoins

Cela fait maintenant quelques années que j’utilise assez régulièrement le Bitcoin et je vous livre ici le résultat de ces expériences, au travers de mes constations, humeurs, coups de gueule et bien entendu ma vision technique pour aborder ce qu’il faut bien qualifier de révolution. Je passerai un bon temps notamment sur l’aspect sécurité qui peut être un véritable challenge à l’utilisation.

L’écosystème du Bitcoin

On ne le réalise sans doute pas vu de notre beau pays qui n’aime pas la finance, mais l’écosystème du Bitcoin représente quand même plusieurs milliards de dollars: sa capitalisation totale à elle seule dépasse 10 milliards de dollars.

Après, vous avez tout ce qui gravite autour du Bitcoin: les marchands, les services, les startups, bien évidemment le gambling, etc. Sans compter tout ce que l’on ne voit pas sur les marchés noirs mais que je n’ai pas envie d’évoquer ici. Mieux, le Bitcoin serait le 8eme moyen de paiement le plus utilisé au monde, et certains avancent même qu’il serait au 5ème rang mondial en 2016. (Non confirmé)

Il serait impossible de décrire toutes les possibilités et autres innovations que l’on peut trouver dans l’écosystème du Bitcoin, tant c’est vaste, et aussi ingénieux. Par exemple, savez vous que l’on peut désormais acheter sur Amazon en payant en Bitcoin; c’est là l’excellente idée que propose purse.io, et qui par la même occasion vous propose des rabais canon, parfois jusqu’à 15%.

Vous en profiterez alors pour faire de l’arbitrage: vous achetez pas cher sur Amazon et vous vendez plus cher sur CdDiscount ou sur Leboncoin. Par exemple ici, l’histoire intéressante en anglais d’un gars qui fait de l’arbitrage sur de l’or via purse.io. Et ceci n’est qu’un bon exemple de tout ce que l’on peut trouver dans cet écosystème particulièrement riche.

Interdisons le Bitcoin qui accélère les inégalités

Du côté de notre gouvernance, nous sommes toujours en présence d’un puits sans fond de nullité absolue. Il est tout de même regrettable que les avancées liées à la Blockchain, la technologie mère du Bitcoin, quelque chose de si innovant et tellement révolutionnaire passe quasiment inaperçu et suscite même plus de la méfiance que de l’enthousiasme.

Le peu de chose que j’ai lu à ce sujet ne concerne que la manière dont le Bitcoin doit être fiscalisé, question d’habitude, d’ici de là. Mais à la lecture des écrits en provenance de la police fiscale, je suis malheureusement au regret de vous annoncer que je n’ai strictement rien compris à la manière dont on doit payer son dû à la grande ponction nationale: il y est question d’abattement à 34% (sur quoi ?), de BNC, d’ISF (Incitation à Sortir de France) et aussi d’ajout de la CSG et autre CRDS. Bref un montage comme d’habitude complètement incompréhensible, de sorte qu’à la sortie, vous aurez nécessairement un redressement parce que l’état a un « manque à gagner » à cause de votre incapacité à interpréter correctement le code général des impôts français et ses 3440 pages.

De toutes les manières, dans notre beau pays, lorsque vous postulez à n’importe quel artifice financier, la brochure qui vous décrit votre placement est composée pour 80% de propos relatifs à la fiscalité, de quoi vraiment vous donner envie de confier vos économies.

Outre les joyeusetés visant à construire des ponts, des routes et renforcer la lutte contre les inégalités via une éducation que tout le monde nous envie mais que personne ne copie, certains ont enfin compris que le Bitcoin est une arme de destruction massive qu’il faut absolument éradiquer. Parce que vous voyez, des vilains pas beau tout plein s’en servent pour acheter des champignons magiques et aussi des AK47.

Remarquez que la bonne chose que j’ai appris à la lecture des propositions des ces messieurs-dames poly-tocards est qu’il est désormais possible d’acheter de la toche ou même une grenade sous le manteau à l’aide d’Euros; oui parfaitement, ma bonne dame, des Euros que la bonne fée URSSAF consent à vous accorder de temps en temps après avoir pris sa dîme.

Sinon pendant ce temps-là, tout près de chez nous, de gros machins commencent à s’intéresser de très près à la Blockchain, mais heureusement, elle ne touchent pas au Bitcoin. Ouf, la sécurité sociale est sauvée !

Ceux qui vont vous voler votre argent à vous

J’en viens maintenant à un problème que j’ai commencé à percevoir au fil du temps que j’ai consacré au Bitcoin. Il arrive un moment pour une raison ou pour une autre, où vous vous retrouvez avec une grosse somme en cash; par exemple, vous vendez votre vieux Xara Picasso sur leBonCoin et pour une raison qui vous échappe et ne vous concerne pas, votre acheteur vous paye en cash au lieu du bon vieux chèque de banque certifié.

La même chose peut très bien vous arriver avec du Bitcoin; d’ailleurs cela vous est certainement déjà arrivé avec du Paypal, par exemple lorsque vous avez vendu du gros electro-ménager sur Ebay, votre frigo par exemple. Dans ce cas, vous n’avez pas de problème, Paypal est une société qui a toute votre confiance, donc vous pouvez laisser vos deniers en ligne, sans trop de crainte. Mais si vous voulez mon avis, je ne m’y risquerai pas, même avec Paypal, question de mauvaises expériences.

Vous avez généralement le même avis sur votre banque, là même où votre salaire est déposé tous les mois. Vous ne vous le savez peut-être pas, mais pour ce service, vous êtes facturés par des petites cotisations mensuelles, et de plus en plus chères. Et vous n’avez sans doute pas encore compris que le gros de ce service n’est pas seulement d’ordre administratif, mais lié à la problématique la plus compliquée à gérer: la sécurité. Oui, parfaitement, les banques vous facturent essentiellement de la sécurité, leur métier initial consistant à garder votre argent à l’abris des voleurs.

Mais maintenant avec le Bitcoin, vous avez un problème de taille, parce que la banque, c’est vous même et vous n’avez pas le choix: vous allez devoir gérer aussi la sécurité de vos fonds, tout comme le pratiquent les banques. Et pour enfoncer le clou, sachez que vous avez affaire à quelque chose de grave et d’endémique, propre à l’utilisation de cette monnaie: un Bitcoin sur deux a été un moment ou autre dérobé, d’une manière ou d’une autre. En gros, vous avez donc une chance sur deux de vous faire voler votre argent.

C’est donc pour se prévenir de ces méfaits que je vous propose la méthode que j’utilise maintenant pour la conservation et la sécurité de mes Bitcoins; méthode que j’estime assez fiable et perfectionnée avec les années. On va dire très humblement que je suis devenu une sorte de banquier amateur.

C’est en ligne que l’on pille les Bitcoins

Dans la plupart des cas, vos Bitcoins sont volés en ligne, par quelqu’un qui se trouve généralement à l’autre bout de la terre et dont il est très difficile de remonter la piste. Les Exchangers, les sites qui vous permettent d’acheter des Bitcoins, sont la cible préférée des hackers. Sur les dernières années, on ne compte plus le nombre de cas de piratage, où les fonds des clients des Exchangers ont été complètement dévalisés: MtGox, Cryptsy, BitFinex, etc.

Votre PC qui héberge votre portefeuille est également une cible potentielle: il est très souvent en ligne pour aller y récupérer des blocs ou des transactions, et vous n’êtes sans doute pas à l’abri d’un quelconque Key logger, spyware/malware et autres virus qui hantent l’Internet. On voit donc ici que le principal problème est votre présence en ligne.

La règle d’or doit donc être la suivante: vous devez absolument laisser le moins possible de Bitcoins en ligne.

Videz toujours rapidement vos comptes sur les Exchangers et ne gardez que le minimum possible. En ce qui concerne votre PC, voici la méthode que j’utilisais encore il y a quelques temps. Je travaillais avec le client Bitcoin Core qui présente l’avantage d’être assez sûr et très simple à utiliser.

Le moyen de préservation des Bitcoins était des plus trivial: vos clés privées, celles qui déterminent que vous êtes le propriétaire des transactions et donc des « fonds », sont contenues dans le fichier stratégique appelé « wallet.dat ».

On commence par arrêter le client Bitcoin puis, on crypte ce fichier en AES256, comme ceci:

$ openssl enc -e -aes256 -in wallet.dat -out photo.dll

Vous noterez que le fichier wallet.dat a été renomé en quelque chose de complètement anodin, du style « photo.dll », pour ne pas éveiller les soupçons. Ceci fait, on le dissimule « ailleurs », puis on l’efface du disque dur, poubelle comprise, bien entendu.

Je vous laisse réfléchir sur le concept « d’ailleurs », il y a là une multitude de façons de le faire: cloud, clé USB enterrée dans le jardin, smartphone des enfants, dissimulation dans une image, etc.

Ce n’est que lorsque l’on a besoin de faire des transactions que ce fichier est restauré dans son répertoire d’origine, en n’oubliant pas de décoder le fichier:

$ openssl enc -d -aes256 -in photo.dll -out wallet.dat

J’ai utilisé cette méthode pendant un certain temps, mais à la longue, le client Bitcoin est devenu trop gourmand un ressource et surtout en place: à l’heure actuelle, la Blockchain qui est systématiquement téléchargée sur le client fait plus de 90 gigas. Entre-temps mes recherches ont abouti à la mise en place d’une autre méthode, beaucoup plus légère et encore plus sûre.

Stockage à froid des Bitcoin avec Electrum

Voici tout d’abord une synoptique qui décrit l’installation que j’utilise:

stockage à froid des bitcoins

Le PC « banque » contient mes clés privées et n’a aucune connexion à Internet. Il s’agit en fait d’un Linux fonctionnant sur une clé USB avec une distribution minimaliste. Il a subi un « hardening » assez fort que je vous détaillerai plus bas.

Le PC « spectateur » est mon PC bureautique qui accède à Internet.

La tablette me sert à faire les transferts entre le PC « banque » et le PC « spectateur ».

Construction et sécurisation du PC « banque »

Pour construire mon PC banque, mon choix s’est orienté vers l’une de ces toutes petites distributions Linux, capable de fonctionner sur une clé USB. Après plusieurs essais sur d’autres distributions, j’ai finalement opté pour Lubuntu. Le système fonctionne parfaitement sur une clé USB 2.0 ou 3.0, quoiqu’un peu lent à mon gout. Un peu d’optimisation est nécessaire, notamment sur la partie vidéo en utilisant par exemple Metacity au lieu de l’OpenBox qui est installé par défaut et en fixant le swapinness à 10.

Pour la partie Bitcoin client, j’ai choisi Electrum, un programme fonctionnant en Python, particulièrement bien adapté au stockage à froid des Bitcoins avec en plus la particularité de ne pas avoir à tout télécharger la Blockchain pour fonctionner; donc un client très léger, ne demandant que très peu d’espace disque, idéal pour une utilisation sur une clé USB.

L’autre avantage est que son auteur est un chercheur Français de l’Inria clairement identifié: Thomas Voegtlin. Vous ne voudriez tout de même pas accorder votre confiance à d’obscurs codeurs russes, comme du temps de Xrumer ?

Pour installer Electrum, on boote sur la clé USB contenant le Lubuntu, on ouvre un CLI et on tape:

$ sudo apt-get install zbar-tools
$ sudo apt-get install libzbar-dev
$ sudo apt-get install python-qt4 python-pip
$ sudo pip install https://download.electrum.org/2.7.11/Electrum-2.7.11.tar.gz

Les paquets Zbar sont utilisées pour gérer des QR codes qui sont un élément très important dans le mécanisme que j’utilise. Ceci fait, on s’arrête là et on ne lance surtout pas Electrum !

Je vais maintenant m’attaquer à la partie la plus importante de l’installation: le hardening du Lubuntu. Car jusqu’à maintenant, la distribution était capable d’accéder à l’Internet; c’était nécessaire pour finaliser l’installation du système. C’est sans doute là que réside la première faille clairement identifiée du système: comment être certain que tout ce qui a été installé est légitime ? C’est là quelque chose de très difficile à déterminer.

Alors je vais désormais faire en sorte que cette distribution soit complètement isolée et qu’elle ne puisse plus communiquer avec le reste du monde. Je commence par désactiver toute la gestion du réseau:

$ sudo systemctl stop networking
$ sudo systemctl disable networking
$ sudo systemctl stop network-manager
$ sudo systemctl disable network-manager

Le bluetooth aussi:

$ sudo systemctl stop bluetooth
$ sudo systemctl disable bluetooth

Et pourquoi pas le modem, cela ne mange pas de pain:

$ sudo systemctl stop ModemManager
$ sudo systemctl disable ModemManager

Maintenant, je cherche à éliminer les services réseau TCP qui sont démarrés et qui sont susceptibles d’être accédés depuis une autre machine:

sudo netstat -anp | grep LISTEN | grep tcp

La dernière colonne vous donne le Process Identifier (PID) ainsi que le service associé. Par exemple:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1143/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 4876/cupsd

Il ne vous reste plus qu’à les désactiver:

$ sudo systemctl stop sshd
$ sudo systemctl disable sshd
$ sudo systemctl stop cupsd
$ sudo systemctl disable cupsd

Vous pouvez aussi tester les ports UDP, mais à priori il y a peu de chances que vous trouviez quelque chose sur une Lubuntu de base:

sudo netstat -anp | grep LISTEN | grep udp

Peut-être du DNS, ou du NTP par exemple, voir du NFS.

Le niveau 4 étant désactivé, je m’attaque maintenant au niveau 3. Ceci se fera au moyen d’une série d’Iptables empêchant toute communication, en entrée, en sortie et en transmission des paquets IP générés par mon Lubuntu:

/sbin/iptables -t nat -F
/sbin/iptables -F FORWARD
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP

Ces instructions sont à mettre dans /etc/rc.local, elles seront ainsi exécutées à chaque démarrage du Linux. Ceci fait, il ne me reste plus qu’à désactiver les éléments constituant mon niveau 2, les pilotes. Exemple chez moi avec le Wifi:

$ sudo lsmod | grep wifi
rtlwifi 63475 2 rtl_pci,rtl8723ae
mac80211 630669 3 rtl_pci,rtlwifi,rtl8723ae
cfg80211 484040 3 mac80211,rtlwifi,8192du

Que nous désactivons:

$ sudo rmmod rtlwifi
$ sudo rmmod mac80211
$ sudo rmmod cfg80211
$ sudo rmmod rtl_pci
$ sudo rmmod rtl8723ae
$ sudo rmmod 8192du

Que nous blacklistons, au moyen du fichier /etc/modprobe.d/blacklist.conf

blacklist rtlwifi
blacklist mac80211
blacklist cfg80211
blacklist rtl_pci
blacklist rtl8723ae
blacklist 8192du

La même chose avec la carte réseau:
$ sudo dmesg | grep eth0
[ 1.757725] alx 0000:02:00.0 eth0: Qualcomm Atheros AR816x/AR817x Ethernet
$ sudo rmmod alx

Et dans /etc/modprobe.d/blacklist.conf

blacklist alx

Bien entendu, il est fort peu probable que vous ayez les mêmes cartes réseau et wifi que moi. Vous aurez certainement d’autres types de pilotes à stopper et à blacklister.

Ceci étant terminé, rebootez sur la clé USB: votre système est désormais complètement hermétique à toute communication réseau.

Nous allons maintenant créer notre portefeuille. Mais afin d’éviter toute tentative de connexion vers l’extérieur, nous allons le faire fonctionner en mode hors connexion. Ceci nous évitera aussi quelques timeouts lorsqu’Electrum tente de contacter ses serveurs.

On peut le faire directement en lançant Electrum suivi du paramètre –offline

$ electrum –offline

Si vous avez l’icone Electrum sur le bureau, allez dans /usr/share/applications et éditez le fichier electrum.desktop

Remplacez

Exec=electrum %u

par

Exec=electrum –offline %u

Normalement, Electrum est désormais lancé. Choisissez Standard Wallet.

electrum creer portefeuille

Choisir « Create a new seed »

electrum creer graine

Cette « graine » est vitale, vous devez absolument la sauvegarder.

electrum sauvegardez graine

Confirmez la graine.

electrum confirmez graine

Choisissez un mot de passe qui vous servira à envoyer des fonds

electrum mot de passe

Allez dans le menu portefeuille et cliquez sur clés publiques maîtresses.
Sauvegardez cette clé publique, elle vous servira plus tard lors de la création du portefeuille spectateur.

electrum clé publique

Voilà, vous avez désormais un portefeuille prêt à fonctionner.

electrum

Il y a quand même plusieurs choses à savoir sur ce PC banque:

– Ce portefeuille ne vous sert qu’à signer des transactions, autrement dit à valider l’envoi de vos fonds. Mais il faut bien comprendre que n’étant pas connecté à Internet, il n’a donc pas la possibilité de le faire tout seul. Ce qui est une arme redoutable contre tous les voleurs et autres pillards « en ligne ».
– Vous ne verrez jamais le solde de votre portefeuille sur ce PC, car vous n’y téléchargerez jamais quoique ce soit de la Blockchain, le grand livre comptable qui trace vos transactions. Vous pourrez néanmoins avoir votre solde sur le PC spectateur.
– Sauvegardez votre graine qui est l’élément fondamental pour créer votre clé privée. Ecrivez-la sur une feuille et cachez-là dans l’armoire de l’Oncle Archibald. Vous pouvez aussi en faire un QR code que vous encodez en AES-256 et que vous dissimulez « quelque part », idéalement hors ligne (Clé USB enterrée dans votre jardin par exemple). Rien qu’avec cette graine, vous serez capable de faire une restauration complète de votre portefeuille.
– N’oubliez pas votre mot de passe.

La tablette

La tablette est comme vous l’avez compris une très simple tablette que j’utilise pour faire communiquer mon PC banque et mon PC spectateur entre eux. Toutes les communications passent exclusivement en QR code, parce que c’est très facile à faire: vous faites une simple photo d’un côté qui sera décodée très facilement de l’autre. Durant l’opération, je passe en mode avion pour éviter que la photo du QR code ne parte Dieu sait où; lorsqu’elle a été utilisée, elle est tout de suite effacée. A l’occasion, je pense récupérer un vieux smartphone complètement déconnecté qui ne servira qu’à cela, histoire d’augmenter encore le niveau de sécurité. De cette manière, je n’ai pas à utiliser une clé USB qui est potentiellement un vecteur de transmission de virus. Et aussi je trouve que c’est plus rapide à l’utilisation: prendre une photo et la scanner après prend beaucoup moins de temps que copier un fichier de transaction.

Le PC spectateur

Le PC spectateur est tout bonnement ma machine bureautique qui est branchée sur la fibre derrière un firewall. C’est elle qui va me permettre:

– de récupérer le solde de mon portefeuille
– de propager sur la Blockchain les transactions qui auront été au préalable signées par le PC banque.

Il faut bien comprendre que ce PC ne peut de lui même envoyer des fonds; donc même s’il se trouve piraté ou même volé, il ne sera pas possible d’y effectuer un retrait de Bitcoin. Considérez donc que le portefeuille contenu sur ce PC est en lecture seule.

Pour créer votre portefeuille spectateur, lancez Electrum et choisissez « Standard Wallet »:

electrum creer portefeuille

Choisir Use public or private keys

electrum utiliser cle publique

Collez la clé publique maîtresse que vous avez générée sur votre PC banque

electrum restore cle publique

Votre portefeuille est prêt. Notez qu’Electrum vous indique que vous ne pouvez pas envoyer de fonds avec ce portefeuille.

electrum wallet mode spectateur

Envoyer et recevoir des fonds.

Pour recevoir des fonds, rien de plus simple: vous utilisez les adresses générées par votre PC banque. Elles sont aussi disponibles sur votre PC spectateur.

Pour envoyer des fonds, c’est un peu plus compliqué:

– Vous préparez votre transaction depuis votre PC spectateur (l’adresse de destination ne doit pas être l’une des adresses de votre PC banque). Cliquez sur « Aperçu »

electrum preparer transaction

– Vous enregistrez cette transaction, idéalement via un QR code que vous scannez avec la tablette, en mode avion. Observez le statut « unsigned » de la transaction.

electrum sauver transaction

– Sur votre PC banque, vous chargez cette transaction avec le QR code que vous avez sur votre tablette. Menu Outils – Charger une transaction – Depuis un QR code. Vous signez la transaction au moyen du bouton « Signer »

electrum transaction non signee

– Vous sauvegardez via un QR code que vous photographez avec la tablette. Observez le status « Signed » de la transaction.

electrum transaction signee

– Sur votre PC spectateur, vous chargez la transaction signée au moyen du QR code que vous venez de prendre en photo. Vous diffusez la transaction sur la Blockchain en appuyant sur le bouton « Diffuser ».

electrum transaction diffusee

– Vous supprimez toute trace de transaction de votre tablette, à savoir les photos des QR codes.

Conclusion

Cela peut paraître un peu lourd au début, mais la sécurité est à ce prix. A la longue, vous vous apercevrez qu’en fait, utilisez le stockage à froid de vos Bitcoins est beaucoup plus simple qu’il n’y parait. La chose vitale à comprendre est que votre PC banque ne doit jamais se trouver en ligne, ni avoir aucun moyen d’accéder ou d’envoyer de l’information sur Internet.

Un seul commentaire sur “Securisation et stockage à froid des Bitcoins

  1. Merci pour toutes ces informations, je vais pouvoir être moins dépendant des grosses plateformes de portefeuille.

    J’avais investi dans les btc via btc-e en 2012 mais les chinois faisaient vraiment trop varier le cours et c’était déjà inutile de miner à l’époque car le courant + les cartes étaient plus chères que les gains possible.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*

CommentLuv badge