Générer un portefeuille bitcoin en papier (paper-wallet)

Générer un portefeuille bitcoin en papier (paper-wallet)

Qu’est-ce qu’un portefeuille en papier Bitcoin à adresse unique ? Il ne s’agit que d’une paire de clés spécialement générée avec l’adresse de réception correspondante. En pratique, vous utilisez un script pour générer une clé privée en utilisant une entropie réelle et vous générez ensuite l’adresse de réception correspondante dans les formats autorisés par le protocole Bitcoin.

Aucun dispositif externe ne doit être impliqué dans la génération mais seulement un ordinateur sans connexion Internet (ceci est très important pour la sécurité). C’est pourquoi on utilise souvent une distribution live, comme pas example “tails“.

Ce type de portefeuille en papier n’est pas dérivé d’une clé “seed” ou d’un mnémonique de 24 mots. Il ne s’agit donc pas d’un portefeuille déterministe hiérarchique (HD), mais seulement d’une clé unique avec adresse associée. De cette façon, vous pouvez recevoir des bitcoins sans utiliser de dispositif matériel.

Pour générer un portefeuille en papier, il est essentiel d’utiliser une source d’entropie réelle capable de produire des clés véritablement aléatoires. Le scénario que je vous fournis à titre de référence utilise en fait le caractère aléatoire provenant du bruit de fond du microphone de l’ordinateur.

Un portefeuille en papier est-il en sécurité ?

La sécurité du portefeuille en papier est déterminée par la méthode par laquelle le portefeuille en papier est généré et les conditions entourant l’environnement dans lequel il est généré. La sécurité dépend en effet de la déconnexion totale de l’ordinateur de génération et de la présence de logiciels malveillants. Il est clair qu’en générant un portefeuille papier, nous déplaçons la confiance vers le système d’exploitation que nous utilisons. Les principaux avertissements sont les suivants :

  • Utilisez une distribution linux live comme “tails” et désactivez le support réseau, en déconnectant aussi physiquement le connecteur réseau;
  • Ne pas imprimer le portefeuille obtenu sur papier mais le transférer sur une clé usb après l’avoir formaté ou le transférer par le biais du scan du qrcode produit par le script; si vous voulez vraiment imprimer le portefeuille, assurez-vous de le faire sur une imprimante qui ne possède pas de mémoire interne afin que la clé privée n’y soit pas stockée.
  • S’assurer qu’il n’y a pas d’appareil électronique qui puisse reprendre les opérations (caméras, webcam ou même la webcam d’un téléphone portable);

Il est clair qu’il peut être compliqué d’obtenir des conditions optimales pour la génération du portefeuille et je ne recommande donc pas de garder de grosses sommes sur un portefeuille de ce type. Toutefois, c’est une excellente solution pour transférer les bitcoins au porteur (en livrant simplement un morceau de papier), ou pour les cartes de fidélité ou les cartes-cadeaux.

Le script que j’ai créé est réalisé en python en utilisant un nombre minimal de bibliothèques. Il est plutôt recommandé de ne pas utiliser de scripts en ligne et de ne pas utiliser de scripts qui utilisent un grand nombre de bibliothèques, encore plus si les bibliothèques utilisées ne sont pas standard.

Comment l’utiliser?

Les fonds déposés sur un portefeuille en papier peuvent être transférés dans votre portefeuille froid grâce à la fonction de “sweep” (par example dans le logiciel electrum). Dans un prochain article, nous pourrions voir comment faire.

Les fonds sur un portefeuille en papier peuvent être vérifiés à l’aide d’un explorer (bitcoin blockchain explorer) ou d’un nœud bitcoin. il suffit d’entrer l’adresse publique correspondante et de visualiser le solde rapporté par l’explorer.

Executer le script

Le script est évidemment gratuit, open source et sans garantie ni support. Vous pouvez le télécharger à partir du dépôt github à l’adresse url :

https://github.com/massmux/Papergen

le script doit être exécuté sur un ordinateur équipé d’un microphone en état de marche car il utilise l’entropie du bruit du microphone pour générer un nombre aléatoire de 256 bits pour la clé privée. En l’exécutant sur la testnet, voici le type de résultat que vous obtenez (n’envoyer pas aucune transaction a ces addresses)

[email protected]:~/Papergen$ ./papergen.py -n testnet
**WALLET**

network : bitcoin testnet
private : 27656071d377dcf3688d16a987329846175ba03bd3d6a95a06752293d8d6babc
public : 02265FBAFEE5AA97F6C229E744BAF3E8B60CB85EA9EEE44EC515437329B2FA6171
hash160 : 8012e50d4452e26ade1e2e9ce6051e36f4e60301
WIF : cNuHKz4SW968tCQcKCnJvdYYA5wSpVWM2t5mZzHJNpfkxxKEnzSK
p2pkh : msC9RSKks8wfNDU2WMyjeBLzn3T5tH3tZs      (legacy address)
p2wpkh-ps2h : 2Mwh3yqzhrBRVtrQQHHSkZVP3E4FzkjgMmJ   (segwit)
p2wpkh : tb1qsqfw2r2y2t3x4hs796wwwvpg7xm6wvqcp0pmx3v  (native segwit, bech32)

J’espère que je vous ai intrigué et aidé avec cet article. Bitcoin nous permet d’entrer dans la finance numérique de plusieurs façons et de développer de nombreuses technologies à coté. C’est pourquoi il s’agit d’une technologie révolutionnaire qui fait l’objet d’un consensus de plus en plus large dans le monde, même dans une période de crise comme celle-ci, où les banques et la finance traditionnelles s’effondrent.