Aujourd’hui, c’est dimanche, il fait beau et chaud, bref l’occasion rêvée pour passer l’après-midi devant un écran à essayer des trucs et des machins, comme créer un paperwallet pour mettre à l’abri mes bitcoins par exemple.
Pour ceux qui l’ignorent, un paperwallet est tout simplement une clé privée et une adresse qui ont été générées hors-ligne et sont ensuite stockées sur un bout de papier. Ce mode de stockage “à froid” (cold storage, c’est-à-dire hors ligne) a un énorme avantage : une sécurité absolue contre toute tentative de vol par piratage informatique. Il a aussi un énorme inconvénient : le paperwallet est un objet physique qui peut être détruit ou volé, et doit être stocké avec le même soin que l’on mettrait à protéger une somme équivalente en billets de banque.
Enfin, un paperwallet peut aussi être offert, son détenteur n’ayant plus qu’à importer la clé privée dans un wallet “classique” pour virer la totalité de son contenu vers une autre adresse qu’il contrôle.
On peut ainsi acheter sur le net des paperwallets tout faits (par exemple ici), avec un design sympa. Il existe aussi des portefeuilles plus évolués : certains proposent de crypter la clé privée grâce à un mot de passe défini par l’utilisateur, afin qu’un voleur ayant réussi à mettre la main sur le portefeuille ne puisse pas utiliser la clé qu’il contient (fonctionnalité désignée sous le terme un peu barbare de “BIP38”).
Parlant de barbare, on ne sait pas très bien pourquoi les Béotiens avaient cette réputation de stupidité parmi les autres Grecs. Qu’Épaminondas me pardonne, mais je reprendrai néanmoins le terme pour bien insister sur le fait que je suis un véritable idiot en informatique. Ce petit article n’est donc pas un guide à proprement parler (guide qui serait peut-être à écrire d’ailleurs, car à ma connaissance il n’en existe pas en français), ma seule ambition est qu’il aide d’autres idiots comme moi à ne pas commettre certaines erreurs, et peut-être de permettre à des lecteurs plus à l’aise que moi de compléter mes oublis ou de pointer mes erreurs.
Préparation
Voici les ressources auxquelles j’ai eu recours :
- le chapitre “Paperwallet” dans Mastering Bitcoin d’Antonopoulos,
- le site Bitaddress, très important car c’est grâce à lui que vous allez générer la nouvelle clé privée ;
- Une distribution de Linux (en l’occurrence, Mint 18.1 ; ISO vérifié) ;
- Unetbootin, qui va permettre de créer une clé USB bootable avec la distribution de Linux téléchargé ci-dessus ;
- Ordinateur sous Windows 10
- Wallets : Electrum 2.8.1 ; Mycellium (iOS) ;
Création d’une clé USB bootable de Linux
Cette étape est en fait optionnelle, dans la mesure où il est aussi envisageable de simplement déconnecter son ordinateur d’internet, d’ouvrir la page Bitaddress préalablement enregistrée dans un navigateur quelconque, puis d’effacer le cache du navigateur une fois l’opération terminée. Toutefois, si vous êtes réellement parano, ou que vous voulez stocker une somme importante sur votre paperwallet, il est conseillé d’effectuer la manipulation sur un système qui n’a jamais été connecté à internet.
Une solution relativement simple est alors de créer une clé USB bootable, c’est-à-dire à partir de laquelle vous pouvez démarrer votre ordinateur. Cela revient à démarrer avec un environnement tout neuf, et permet donc d’éviter tout risque de sécurité avec un système que vous utilisez tous les jours pour faire n’importe quoi sur le net.
Après avoir téléchargé une des nombreuses versions de Linux (peu importe laquelle, du moins pour autant que je sache) et vérifié son authenticité (c’est mon côté parano), j’ai donc lancé un petit utilitaire, Unetbootin, qui prend un ISO de Linux et le met sur une clé USB configurée pour qu’un ordinateur puisse démarrer avec elle.
(Attention, le processus peut être un peu long, et la barre d’avancement sembler bloquée à certains moments. Soyez donc patients, et ne faites pas comme moi qui ai interrompu 5 fois le processus pour comprendre d’où venait l’erreur alors qu’il suffisait d’attendre 5 min)
Pour booter sur cette clé, il suffit maintenant de la brancher dans un port USB, de redémarrer l’ordinateur, et de pianoter sur la touche qui permet d’accéder au BIOS avant que Windows ne se lance (généralement, F2 ou F8). Une fois sur cet écran qui fait très peur aux utilisateurs de base, vous devriez trouver des options de “boot” qui vous permettront de démarrer sur la clé USB plutôt que sur Windows.
Génération du paperwallet
Voici l’étape principale, puisqu’un paperwallet, ce n’est finalement qu’une clé privée. Il existe certainement plein de façons de la générer, mais en l’occurrence j’ai essayé celle qui est recommandée dans le livre d’Antonopoulos, à savoir Bitaddress.
Il faut tout d’abord enregistrer une copie de la page pour pouvoir l’ouvrir hors-ligne (peu importe que vous restiez sous votre OS habituel ou sur un tout neuf). Pour ce faire, cliquer sur le lien vers le dépôt Github en bas à gauche de la page :
Je me suis ensuite complètement déconnecté de tous réseaux wifi ou filaire, et j’ai ouvert le fichier .zip dans mon navigateur habituel. Le générateur visible ci-dessus utilise des sources d’entropie telles que les mouvements de la souris ou des caractères tapés par l’utilisateur pour générer une clé privée et une adresse.
Normalement, il est recommandé d’imprimer cette page sur une imprimante connectée en USB (surtout pas en sans fil), et la plus “stupide” possible (des imprimantes “modernes”, connectées et parfois avec un disque dur, représentent une faille de sécurité potentielle). Bon moi je suis complètement parano, alors j’ai fait ça :
C’est long, fastidieux, et potentiellement source d’erreurs de copie, donc fortement déconseillé, mais au moins maintenant je sais que ça marche.
Envoi des fonds
Le plus important est de comprendre que ce qui fait la force de cette clé, c’est qu’à ce stade elle n’a à aucun moment été sur un appareil électronique. Elle n’existe que dans notre monde “matériel”, rendant toute tentative de piratage informatique futile. La prochaine étape est d’y envoyer des fonds depuis notre wallet habituel. Toute somme envoyée à cette adresse ne pourra être dépensée que par le détenteur de la clé privée inscrite sur ce bout de papier. Il faut avoir conscience que si ce dernier venait à être détruit, personne ne pourra jamais les récupérer.
J’ai donc envoyé le pactole sur cette adresse, la transaction est visible sur le site Blockchain.info (ou sur OXT.me) :
Si vous comparez l’adresse surlignée en jaune avec celle recopiée sur le papier ci-dessus, vous constaterez qu’il s’agit de la même. Cette somme est désormais en sécurité.
Il est possible d’envoyer des bitcoins sur cette adresse autant de fois que nécessaire, en revanche il est important au moment du retrait de retirer l’intégralité de la somme contenue sur cette adresse en 1 fois.
Le retrait, ou la mort du paperwallet
Comme je viens de le dire, le paperwallet continue à vivre et à être sûr tant qu’on se contente d’y envoyer des bitcoins, mais redevient faillible aussitôt qu’il sert à émettre une transaction, c’est pourquoi quand vous déciderez de récupérer les bitcoins qu’il contient, il faudra envoyer en une seule transaction l’intégralité de la somme vers une autre adresse (qui peut être un nouveau paperwallet, d’ailleurs). Inutile de dire qu’il ne faut absolument plus s’en servir par la suite et y envoyer d’autres bitcoins !
Pour retirer le contenu de votre portefeuille, il va falloir l’importer dans un wallet, en l’occurrence dans mon cas Electrum. J’imagine que la procédure peut être légèrement différente avec d’autres, mais voilà ce que j’ai fait :
Conclusion : c’est pas si compliqué, et ça peut rapporter gros
Ce qu’il faut retenir, c’est qu’en dépit de mes appréhensions initiales, même un béotien comme moi y arrive. Et encore, je n’ai pas choisi le plus facile, puisque je n’ai pas voulu acheter un paperwallet “tout fait”, ni en imprimer un.
On peut créer un paperwallet pour protéger une importante somme en bitcoins, mais un hardware wallet comme Ledger ferait alors tout aussi bien sinon mieux l’affaire. La grande force du paperwallet, c’est d’être gratuit, de ne nécessiter aucune aide extérieure, et aussi d’être un objet palpable, finalement assez semblable à une carte cadeau dont on devrait dépenser le montant en une fois, et que l’on peut potentiellement offrir aux néophytes et/ou aux sceptiques.
ADDENDUM 17/09 : pourquoi il vaut mieux ne pas utiliser la protection par mot de passe (BIP38)
Concernant la protection de la clé privée par mot de passe (“BIP38”) dont je parle au-dessus, après l’avoir moi-même testé, je déconseille l’utilisation de cette fonctionnalité, en tout cas pour des utilisateurs débutants.
En effet à l’usage il me semble que la sécurité supplémentaire qu’elle apporte ne compense pas le risque de perte du mot de passe.
De plus le décryptage de la clé préalable à son importation dans un wallet est une opération qui me semble inutilement stressante et compliquée pour un novice.
A moins que vous n’ayez une excellente raison de vouloir crypter votre clé privée (par exemple, vous êtes sûr de ne pas pouvoir empêcher quelqu’un d’autre d’avoir accès à votre wallet), je pense qu’il est préférable de laisser son paper wallet en clair et de se concentrer sur la protection “physique” : votre wallet est parfaitement sûr tant que personne ne peut le voir.