Author

Topic: [Tuto] - Stockage sécurisé de Bitcoin (chiffrement d'un wallet.dat en offline) (Read 4290 times)

hero member
Activity: 938
Merit: 576
Merci, ça peut vraiment aider les gens qui veulent plus de sécurité pour leurs Bitcoins afin de ne pas se les faire voler ou que des hackeurs s'intéressent à eux.
legendary
Activity: 1512
Merit: 1011
Actuellement j'ai 2/3 wallet.dat d'avance avec 3 adresses chacunes prêtes à l'emploi, déjà backupé à plusieurs endroits géographique (donc une copie sur une clée USB chez les parents aussi ;-) )

Ah ouais, pas bête ... je me demandais, justement, ce qui se passait avec les "soi-disant" 100 adresses de réceptions pré-établies quand il y a une révision de la structure du wallet.dat par Bitcoin Core.

Mais en les générant (donc en les rendant visibles et fixes), on se prémunie de ce type de mise à jour de structure.
sr. member
Activity: 476
Merit: 250
Super tous ces tuyaux ! T'assures ! :-D
legendary
Activity: 1652
Merit: 1000
Bitcoin enthusiast!
Normalement il y a 100 adresses pré-générées dans un wallet.dat bitcoin (cf: https://en.bitcoin.it/wiki/Key_pool ), donc en théorie tu n'auras pas de problème tant que tu ne génère pas plus de 100 adresses, dans le cas contraire il faudra renvoyer une nouvelle version du wallet.dat pour avoir les nouvelles clés/adresses.

Perso ce que j'ai fait la dernière fois c'est que j'ai généré directement plusieurs adresses avec le même wallet.dat pour en avoir d'avance, et surtout pouvoir les noter pour les utiliser sans devoir resortir le wallet.
Actuellement j'ai 2/3 wallet.dat d'avance avec 3 adresses chacunes prêtes à l'emploi, déjà backupé à plusieurs endroits géographique (donc une copie sur une clée USB chez les parents aussi ;-) )
sr. member
Activity: 476
Merit: 250
Yes c'est bon pour moi sauf un point.

Le truc c'est que si j'envoie une clé usb chez mes parents, avec un wallet clean via ta méthode et que je génère, plus tard,  plusieurs nouvelles adresses sur mon wallet.dat à domicile, celui de mes parents serait il inutilisable?

legendary
Activity: 1652
Merit: 1000
Bitcoin enthusiast!
Non, une fois que tu as ton fichier wallet.dat et que tu as copié ton adresse (en ayant bien vérifier que tu peux signer un message avec ton adresse pour vérifier que tout est ok) tu as tout ce qu'il faut !
Tu peux ensuite garder dans un endroit safe (même plusieurs) ta passphrase en offline / sur un papier.
Le fichier wallet.dat peut être sauvegarder n'importe où (sans la passphrase on ne peut pas voler les bitcoins).

Bref une fois que tu as bien tout vérifié et que es sur d'avoir des bons backups de ton wallet.dat et de ta passphrase (car si tu perds l'un ou l'autre, tes bitcoins seront perdus !), tu peux envoyer tes bitcoins sur ton adresse.

NB : si tu as besoin de plusieurs adresses mais que tu veux avoir un seul fichier wallet.dat/passphrase, il est possible de générer plusieurs adresses lors de l'étape #2. Il faut juste faire attention à copier le fichier wallet.dat après avoir généré les adresses (même si à priori il y a une réserve de 100 clés, on est jamais trop prudent :-)
sr. member
Activity: 476
Merit: 250
Ce fut très douloureux mais c'est fait ! Merci à toi pour le tuto !

Maintenant que j'ai mon wallet.dat, je ne suis pas obligé de faire des copies après une maj de la blockchain où après une transaction ?
legendary
Activity: 1652
Merit: 1000
Bitcoin enthusiast!
Quand tu marques; "vérifiez la sha256 de l'archive". Qu'est ce qu'il faut vérifier? Ca me télétcharge un fichier .asc mais je ne sais pas quoi en faire?
Je viens de mettre à jour le premier post du topic pour expliquer comment vérifier les signatures.

De plus; il ne faut pas installer Bitcoin Core pour Ubuntu directement au lieu de la version Linux?
Ubuntu = Linux, l'archive linux sur le site fonctionne très bien.
La "version" Ubuntu c'est l'installation d'un repo qui contient les mêmes versions, mais c'est géré en parallèle par une autre personne (dont potentielement pas toujours à jour...).
En fait c'est pratique si tu veux faire gérer les maj de ton client bitcoin par apt, mais dans notre cas on démarre sur une clé USB dont le contenu sera effacé quand on aura reboot, il n'y a donc pas besoin d'utiliser cette méthode .

Enfin, est ce qu'il y a moyen de rajouter en plus de la méthode des dés, un google authentificator?
Non, sauf à stocker uniquement ton wallet ensuite sur un cloud/service/serveur qui te propose du 2FA avant de récupérer tes fichiers, après il faut savoir que si tu perds ton wallet tu perds tes BTC !
sr. member
Activity: 476
Merit: 250
Salut,

Je suis en train de travailler sur le dossier!

Quand tu marques; "vérifiez la sha256 de l'archive". Qu'est ce qu'il faut vérifier? Ca me télétcharge un fichier .asc mais je ne sais pas quoi en faire?

De plus; il ne faut pas installer Bitcoin Core pour Ubuntu directement au lieu de la version Linux?

Enfin, est ce qu'il y a moyen de rajouter en plus de la méthode des dés, un google authentificator?

Merci Wink
sr. member
Activity: 476
Merit: 250
Je vais étudier le dossier ! Merci en tout cas !
legendary
Activity: 1652
Merit: 1000
Bitcoin enthusiast!
Si tu lis ce que j'ai raconté tu verras que je cite Ubuntu, donc oui ça fonctionne avec...
Il ne faut pas l'installer mais ce faire une clé usb pour l'utiliser quelques minutes seulement.

Pas contre si tu n'y connais rien c'est p'tete pas une bonne idée de te lancer la dedeans...
sr. member
Activity: 476
Merit: 250
OK j'y connais rien en Linux.

Je peux installer Ubuntu, ça ferait  l'affaire ?
legendary
Activity: 1652
Merit: 1000
Bitcoin enthusiast!
Ce n'est pas obligé de le faire sur un Linux, mais vu que le but est d'utiliser le système 10-15 mn à chaque fois sans le reconnecté au net ensuite c'est pas pratique de faire une réinstallation de windows à chaque fois par rapport à l'utilisation d'un "Live CD" linux (sur CD ou clé USB).
sr. member
Activity: 476
Merit: 250
Salut,

Merci pour le tuto !

Cela implique-t-il d'avoir un pc sous Linux / Ubuntu ?
legendary
Activity: 1652
Merit: 1000
Bitcoin enthusiast!
NB : je vais récup le BTC qui est sur ce wallet sécurisé, il ne s'agit donc pas d'un hack Smiley

Pour info 2 solutions pour le faire :
 - Importer le wallet dans un Bitcoin Core connecté au net sur un PC clean, où depuis un live CD comme pour la création du wallet.
 - Créer une tx en ligne (ici par ex : https://coinb.in/#newTransaction ), et la signer en offline via la commande signrawtransaction. Une fois signée il suffira de broadcaster la tx via un exploateur bitcoin ou via un client bitcoin qui le permet.


Edit : la passphrase de ce wallet était :
Code:
bcd prep pimp lane pow farley xc stark camel bench oar shady moor
legendary
Activity: 1652
Merit: 1000
Bitcoin enthusiast!
Je vous ici une méthode qui vous donnera une base pour stocker vos Bitcoin de façon sécurisée.
Cette méthode n'est pas adaptée à une utilisation en tant qu'"hot wallet" mais est plus adaptée à du stockage "long terme".

Bref vous aurez besoin :
 - de dés.
 - d'une clé USB.
 - du papier.

#1 - Génération d'une passphrase

Le but ici est de générer un vrai mot de passe qui servira à chiffrer notre wallet bitcoin.
Je conseille d'utiliser cette méthode avec des dés : http://world.std.com/~reinhold/diceware.html
En gros il suffit de lancer 5 dés un certain nombre de fois et de noter les mots qui sortent pour obtenir notre passphrase qu'on notera sur du papier (à partir de 10/12 mots on est bien).

Ex :

 1 6 6 6 5 cleft
 1 5 6 5 3 cam
 5 6 3 2 2 synod
 3 5 6 1 6 lacy
 6 5 2 2 4 yr
 6 4 3 2 6 wok
 1 3 3 2 2 banks
 1 6 3 2 3 cell
 2 1 3 6 5 copy
 5 1 1 1 4 quad
 3 6 1 3 6 later
 5 2 6 3 5 santa
 3 3 3 6 4 hulk

Ce qui nous donne pour une passphrase de 13 mots par ex :
Code:
cleft cam synod lacy yr wok banks cell copy quad later santa hulk

#2 - Création d'un wallet

 - Démarer votre ordinateur sur une clé USB Ubuntu
 - Connectez vous à internet
 - Télécharger la dernière version de Bitcoin Core pour linux, vérifiez la sha256 de l'archive (voir plus bas)
 - Coupez internet !
 - Lancer Bitcoin Core, notez l'adresse de reception générée, par ex : 1GRD9F85SdozMRUfPFJEA2ah8so2V5giou
 - Chiffrez le wallet avec la passphrase générée à l'étape 1
 - Copiez le fichier wallet.dat chiffré (situé dans ~/.bitcoin/) sur une clé USB ou sur votre disque dur.
 - Redémarrer l'ordinateur.

A la fin de cette étape, votre wallet a été généré en offline sur un système propre et a été chiffré par une passphrase qui a été générée avec des dés.

#3 - Vérifications

 - Démarer votre ordinateur sur une clé USB Ubuntu
 - Connectez vous à internet
 - Télécharger la dernière version de Bitcoin Core pour linux, vérifiez la sha256 de l'archive (voir plus bas)
 - Coupez internet !
 - Lancez Bitcoin Core / Quittez le (le but étant de créer le datadirectory ~/.bitcoin/ )
 - Remplacer le wallet.dat créé par votre wallet.dat chiffré créé lors de l'étape 2
 - Lancez Bitcoin Core
 - Vérifier que l'adresse de reception est la bonne, par ex : 1GRD9F85SdozMRUfPFJEA2ah8so2V5giou
 - Vérifiez que vous avez le bon mot de passe du wallet, en signant un message avec l'adresse 1GRD9F85SdozMRUfPFJEA2ah8so2V5giou par ex
 - En cas de succès, vous pouvez redémarrer votre ordinateur.
 - Si vous n'arrivez pas à signer un message à l'aide de votre adresse, recommencer l'étape 2 et n'envoyez surtout pas de Bitcoin sur l'adresse générée !!

Cette étape est essentielle et permet de vérifier, toujours en offline, que vous n'avez pas fait d'erreur en tapant votre passphrase lors du chiffrement du wallet ou en la recopiant sur papier.
(faites gaffe aussi si vous avez plusieurs exemplaires papiers de votre passphrase qu'il n'y a pas eu d'erreur de recopie !)

#4 - Utilisation

Vous vous retrouvez donc avec 2 élements :
 - une passphrase sur papier, qu'il est conseillé de recopier sur plusieurs papiers pour l'avoir à plusieurs endroits géographiques différents.
 - un wallet.dat chiffré, que vous devez backuper à plusieurs endroit et que vous pouvez même envoyer sur le cloud / à vos amis etc.. le wallet.dat sans la passphrase ne sert à rien !

Vous pouvez maintenant envoyer vos Bitcoins sur l'adresse que vous aviez noté, le jour où vous aurez besoin de dépenser ces bitcoin il suffira d'importer le wallet dans Bitcoin Core (sur un ordi propre ou toujours à l'aide du clé USB comme dans l'étape 2/3) pour récupérer la clé privée de votre adresse ou pour signer une transaction en offline selon le niveau de sécurité que vous avez besoin.

#5 - Exemple

Voici un exemple de wallet généré via cette méthode, l'adresse est là même que celle de ce tuto ( 1GRD9F85SdozMRUfPFJEA2ah8so2V5giou ) mais bien sur la passphrase est différente :-)
Vous pouvez le télécharger ici : http://bitcoin-fr.io/BCT.zip
NB : je viens de faire une demande de retrait chez Paymium pour envoyer 1 BTC sur l'adresse 1GRD9F85SdozMRUfPFJEA2ah8so2V5giou , histoire de montrer que je suis confiant dans cette méthode !
Edit : la tx a été faite, il y a maintenant 1 BTC sur l'adresse 1GRD9F85SdozMRUfPFJEA2ah8so2V5giou du wallet.dat de plus haut.


-----
Vérification de la signature (exemple pour la version 0.12.1)
-----



#1 Récupérer la clé PGP de Wladimir (celui qui signe les archives de Bitcoin Core disponibles sur le site bitcoin.org)

-> https://bitcoin.org/en/download --> en cliquant sur "v0.11.0+" dans la partie "Bitcoin Core Release Signing Keys" on récupère ce fichier ( laanwj-releases.asc )
Pour la version 0.12.1, ça ressemble à ça :

Code:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQINBFWKlBcBEACgZJd/6LrSgNSVxiyq5N9h0E7zgSHG/ahuWAnWeFtxaxHeukH+
Q2Zq6F8FLbq40PphyroRylMBpzPBcyxjee7mDj1DpJ9ayv6GGPTyQzOImhChEV8p
bA42dvXnB5ju0rPh2GxctbiZZD1kiPH4jlmDIgomvupAj9OFntA5jfkuSFBekZrw
QyZowz/paMBIe24YH2LyaZjC2DqLy8Znh78OfAZxZsWSdZxK5LsbkCE9l8Li3gQa
rxm4aEMBHhvns+s8Ufa47sdJAYAfVnAWb5Dfe4oVFh70PvB8GSGFS9qeib0eEQBD
71c9MN+REDTSOYO2VnUSFbu7IrKsPsClqwfT9KzI/uz5fpHSKdCp5AO7oDZiU36s
LsSOBbukTmFQfVrAniFEZxHLCBufXCsAwp07xtUH9ytbW0Y/eHYlZojoWJJPT//1
cQ/A2Ix/nxbSkSPq8wpCUhBxvTQoU9BXeQIbSy0yUmj5nS+3DR7IK2Q7ACyVClr7
LVQOGxgZhHr9Kq87RDqc1wlvbCxb+KTJQhJySpOVoiaME6jLBzgE7G+5N6IXTK5u
OriOsQwcLdeBu7TPgft79uBYnmYeaNVdovlBB//7H7UvY0kAxAg4NPgK6eYRdzn+
8ZtbntNXi/23RJvzeZJVBqQ7bYt4fjmHmRYrbM4jWKJEoJOE6wzpmELUowARAQAB
tFVXbGFkaW1pciBKLiB2YW4gZGVyIExhYW4gKEJpdGNvaW4gQ29yZSBiaW5hcnkg
cmVsZWFzZSBzaWduaW5nIGtleSkgPGxhYW53akBnbWFpbC5jb20+iQI+BBMBAgAo
BQJVipQXAhsDBQkDFwQABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCQyAGe
NsLpZOBRD/wLfujEC4ZYMFwPXnhvOGEWAPeuOg06iXhEqJ1biOvxhFfwwjPoXGMQ
i/pdfGck5xZVFcxObpdHBp0p9ardos1aRXAS8JTnTQXTX0qs0QNxnLTBz+5DrIc4
l7r5DAlr/FapUKNSbjobOrbv+F371b7XhLJ7oob5XXo+IS7kEY+Si5BXb0uVy8ms
SaKDooO2RfByrFI3LTHW3VESuuNnXgH6309yeGORgBazKtnxZPPlD2raTNXe9q7U
dF2Xv6Rr53iCGGN5xncL5A6nF3fou0tGvqLFBkrs4BqeNNwC6/jQLfpOfqiQ+XGR
q1KmT9E5E1qRXOb1Fc2koIUt/mSzRzxfxaEjI1UR0I4QtPsF2aP11sOJ1MJXyrEi
Kx1Nb0eUAYw0ZLTfm+uToUUTXzaB5gZqxmyY/eRFddCuGn+UwZnCiUImCWuk5yLq
ivyNbPfD1nwiZqNd879DkwFovNQfbOes4gfZyS28FXuYD/3mNN2WqGeJHZBGpglR
8EbiuJcgo7wPVC7aiIG0deSe6Flw04f2JE75zBKbzWccydtk16GzUBorbhJ4+Q7V
ikss1m4O/hDCU32t9V02+666l0ewM3H7AlTGxmWPWcaeADkywDHGb3frZU8Wh7to
e8I7ST0ap2vf11stL4Ejeyymcy2Xx1S7C57GuBSBCMJv962YIalk+4kBHAQQAQoA
BgUCVYqVFgAKCRB0gQsBI0bJpmthB/9tHtBEUuR9Ce1HBWin8AG18FDhw+019GvK
uMysu004imrPQRnH+I780W3htFBFhiZ+yhSllb4sJrW5awitIQxxe3V+xcDjyidh
32GjKDXvb4GHHuDC6uK2Hj0PB8XfqT1O1eCN3E/tn00al6qx/SvLnhW0BlqWwvVh
cJpQE5pa7E97Gw+arD1/XPy0WRX8SuEphdZ+sN1tP8yZZK8Bvi0rz+p0n5aop6Z6
6Fj2buJnVQK6xDfXwt6/F5s7lyx1QKC4wF0MiMA8jv2KkbFEuiuiteNynrsGV7UZ
0VNvCdXe1cDKPnC64HP7nPluFRMLZbWq4DESbfGCCrmzz7f7eAEn
=mufP
-----END PGP PUBLIC KEY BLOCK-----

#2 On importe la signature

(dans le terminal, dans le dossier Download ("cd Download" pour y aller))
Code:
$ gpg --import laanwj-releases.asc 
gpg: key 36C2E964: public key "Wladimir J. van der Laan (Bitcoin Core binary release signing key) " imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u

#3 Récupérer le fichier qui contient les signatures

-> https://bitcoin.org/en/download --> en cliquant sur "Verify release signatures" on récupère ce fichier ( SHA256SUMS.asc )
Pour la version 0.12.1, ça ressemble à ça :
Code:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

abf0e7336621250702d7a55487c85b8de33c07a30fbc3ecf7f56c97007fcb4ce  bitcoin-0.12.1-linux32.tar.gz
54aca14b7512801ab78cc93f8576e1b66364a890e8017e8a187e4bf0209fd28c  bitcoin-0.12.1-linux64.tar.gz
91d14dcb9b88ca845df450ceb94250bb5c9a0d514d8ca0c55eb480d0ac77ef32  bitcoin-0.12.1-osx64.tar.gz
e1bc86d24dd978d64b511ada68be31057c20789fb9a6a86c40043a32bf77cb05  bitcoin-0.12.1-osx.dmg
08fc3b6c05c39fb975bba1f6dd49992df46511790ce8dc67398208af9565e199  bitcoin-0.12.1.tar.gz
fba73e4825a6421ce6cc1e48b67ff5f2847ae1b520d26272e69f7f25de4f36d1  bitcoin-0.12.1-win32-setup.exe
148fb438a32f1706a366a7825bbc5e770e5f9a20e5694f724a443275976a0791  bitcoin-0.12.1-win32.zip
c6e06f90e41c36c9a447f065952869e2d7d571ab34b86d061ae19ec25b2799d4  bitcoin-0.12.1-win64-setup.exe
d8e1ab9ff65b79c130ec6af8e36626310ffdaf6aacb7a40cfb76e7a63bdfcfd5  bitcoin-0.12.1-win64.zip
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBCAAGBQJXEIwgAAoJEJDIAZ42wulkXNcP/Re0iawPi8muiq6J36ZUZKws
KL2nwjCImj91on8wGoTUir1IytuIafA4JMHslos2Ak3za2UKAEZrEfx0dXm/FVql
AgRneYLYedMQ8127UkSho4rxuwjB3h2gR/FGPpPT0PmbNTWOFsKtV1V9zwsCeA9Q
br/ly2BfZHWsS1tpSK5ukP5W0q+Ii2fO4pcfaAsS2y/gc5kyj5hTiKQivwBVXoVA
cyH1splq1foM5BYwOuT/cUKGrpA8fWo7+xOaEhhFBlW0oJaSXcNSK9mVTSI/dQ/2
lINXcWBtotnH6/evS35pAIOe4PHg/URhXNT/Sdfwts4YL5nMtF+SPBrJWadPvx3C
qdSDZKMuM0cDjVg1F4rjoWAxyshWNKKU2J+qkNUBZ1LbpVyDR3Gl4LFwRjaw0wyZ
n6zHonPCtp33ErhsaY0GryHV1pKvL1h6uyDNWHbYpKny4F+TvbyQ6XNVHrx1IAn5
+9UMPB3Q962/8hrRqK95Cs6AJ/D1Wdw9rwEqOC48waDzttYCVknn4L6rGECDdRM4
6pbWNTf3m9lzThWjiuEdNnPoNuKoBD9/UHWW/WRHjT6tbcGqstoyRKTsi8jjmwnC
9g4xWRsTdqYIAL4PBv32T+QYW/YcyRNTT97t/M0aukXxxxjCObehWVmBXVeNn0/9
lvvCgGgSJXtJHxzqcJ2I
=a2/6
-----END PGP SIGNATURE-----

4 On vérifie que le fichier qui contient les signature a bien été signé par Wladimir

Code:
$ gpg --verify SHA256SUMS.asc 
gpg: Signature made Fri 15 Apr 2016 08:37:20 AM CEST using RSA key ID 36C2E964
gpg: Good signature from "Wladimir J. van der Laan (Bitcoin Core binary release signing key) "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 01EA 5486 DE18 A882 D4C2  6845 90C8 019E 36C2 E964


5 On calcule le sha256 de l'archive qu'on a télécharger

(avec le terminal, toujours dans le dossier qui contient l'archive de Bitcoin Core)
Code:
$ sha256sum bitcoin-0.12.1-linux64.tar.gz 
54aca14b7512801ab78cc93f8576e1b66364a890e8017e8a187e4bf0209fd28c  bitcoin-0.12.1-linux64.tar.gz

#6 On peut maintenant comparer les sha256 des étapes précédentes

- 54aca14b7512801ab78cc93f8576e1b66364a890e8017e8a187e4bf0209fd28c
- 54aca14b7512801ab78cc93f8576e1b66364a890e8017e8a187e4bf0209fd28c

Les deux hashs correspondes --> C'est OK !
Les deux hashs sont différents -> Problème !



Si vous avez des questions / remarques etc.. N'hésitez pas !

Jump to: