[ Intro ] -- [ Préparatifs ] -- [ Thunder Badger ] -- [ Bitcoin ] -- [ LND ] -- [ Mainnet ] -- [ Bonus ]
Difficulté: moyenne
Tor est un logiciel libre d'anonymisation de trafic internet, dont le principe est de faire transiter une information par un certain nombre de relais afin de masquer l'emplacement respectif des points de départ et d'arrivée.
Il fonctionne sur le principe d'un "réseau en oignon" : l'information est chiffrée avec plusieurs clés publiques appartenant aux différents relais par lesquels elle transite. Chaque relai décrypte la couche correspondant à sa clé privée avant de la passer au suivant, d'où le terme "oignon".
👉 Pour en savoir plus : https://fr.wikipedia.org/wiki/Tor_(r%C3%A9seau)
Tor est principalement utilisé afin d'assurer une relative immunité contre l'analyse de trafic, qui permet par la simple analyse de votre activité sur internet (quels sites vous visitez, quels services vous utilisez, combien de temps etc) d'apprendre énormément de choses sur votre vie et vos centres d'intérêt. Ce type d'analyse est évidemment massivement utilisé par les publicitaires, au premier rang desquels Google, mais peut aussi être utilisé par des acteurs malveillant, étatiques ou criminels, afin de vous nuire.
Un autre usage de Tor est de permettre la mise à disposition d'informations sans révéler son emplacement et son identité, et c'est cet usage qui nous intéresse davantage dans le cas de Bitcoin.
Sans rentrer dans toutes les raisons que vous pourriez avoir d'utiliser Tor, voici celles qui me semblent pertinentes par rapport à l'utilisation de Bitcoin :
- En exposant l'adresse IP de votre domicile avec votre nœud, vous dites à tout le monde "il y a un nœud Bitcoin dans cette maison". Certains pourraient en déduire qu'il y a aussi des bitcoins, faisant de vous et de vos proches une cible potentielle pour des malfaiteurs.
- Cela pourrait un jour également attirer un autre type de voleurs, notamment dans l'hypothèse d'une véritable interdiction de la possession de bitcoins...
- Cela vous permet sans doute de gagner un peu en confidentialité pour vos transactions (à la condition évidemment de prendre d'autres mesures pour anonymiser vos UTXO, sans quoi l'analyse de chaîne risque de vous rattrapper très vite).
Tous ces arguments s'appliquent évidemment aussi à Lightning, dissimuler son nœud Bitcoin derrière Tor n'a en effet que peu d'intérêt si vous ne faites pas de même avec votre nœud Lightning, car sa présence est un indice fort de celle d'un nœud Bitcoin.
Connectez-vous via ssh en tant que admin :
ssh admin@[VOTRE_IP]
Les instruction d'installation de Tor se trouve à l'adresse suivante : https://www.torproject.org/docs/debian.html.en#ubuntu
# Activez l'utilisateur "root"
sudo su
# Ajoutez le repo du torproject dans /etc/apt/sources.list
echo 'deb https://deb.torproject.org/torproject.org bionic main' >> /etc/apt/sources.list
echo 'deb-src https://deb.torproject.org/torproject.org bionic main' >> /etc/apt/sources.list
# Afin de pouvoir vérifier l'intégrité des fichiers, nous allons également télécharger les clés du torproject
gpg2 --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
gpg2 --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
# Terminez la session "root"
exit
# Nous allons maintenant installer la dernière version de Tor
sudo apt update
sudo apt install tor deb.torproject.org-keyring
Arrivé à cette étape, Tor devrait déjà être actif sur votre ordinateur.
# Vérifiez qu'un service "tor" a bien été créé et qu'il est actif
systemctl status tor.service
# Ouvrez le fichier tor-service-defaults-torrc, vérifiez que "user" est bien "debian-tor"
cat /usr/share/tor/tor-service-defaults-torrc
# Vérifiez les utilisateurs correspondants au groupe
cat /etc/group | grep debian-tor
> debian-tor:x:123:bitcoin
# Si l'utilisateur "bitcoin" n'apparaît pas comme ci-dessus
sudo adduser bitcoin debian-tor
cat /etc/group | grep debian-tor
> debian-tor:x:123:bitcoin
# Enfin, il faut activer une option dans /etc/tor/torrc
nano /etc/tor/torrc
> #ControlPort 9051 (retirez le "#")
> #CookieAuthentication 1 (idem)
# Ajoutez cette ligne si vous ne la trouvez pas dans le fichier
> CookieAuthFileGroupReadable 1
# Redémarrez tor.service pour que le changement soit pris en compte
sudo systemctl restart tor.service
Ouvrez une nouvelle session avec l'utilisateur "bitcoin". Tout d'abord, arrêtez Bitcoin Core :
bitcoin-cli stop
Nous allons désormais ajouter les lignes suivantes dans bitcoin.conf
:
proxy=127.0.0.1:9050
bind=127.0.0.1
listenonion=1
Redémarrez Bitcoin Core pour que les changements soient pris en compte :
nohup bitcoind
👉 Une très bonne vidéo qui montre (presque) le même processus
Toujours avec l'utilisateur "bitcoin", arrêtez LND :
lncli stop
Ouvrez le fichier de configuration :
nano .lnd/lnd.conf
Ajoutez les lignes suivantes :
tor.active=1
tor.v3=1
listen=localhost
Redémarrez LND comme d'habitude :
nohup lnd
lncli unlock
👉 Plus d'information ici.
- Arrêtez Éclair :
screen -r eclair
<Ctrl + c>
<Ctrl + a, d>
-
Ouvrez le fichier de configuration :
nano .eclair/eclair.conf
-
Maintenant, les choses sérieuses. Ajoutez les lignes suivantes dans votre fichier :
eclair.tor.enabled=true
eclair.server.binding-ip="127.0.0.1"
eclair.socks5.enabled=true
eclair.socks5.use-for-ipv4 = true
eclair.socks5.use-for-ipv6 = true
eclair.socks5.use-for-tor = true
Enregistrez et fermez le fichier.
- Redémarrez Éclair :
screen -r eclair
java -jar eclair-node-0.3.3-12ac145.jar
<Ctrl + a, d>
- Bitcoin :
- Vous pouvez vérifier la présence de certaines lignes dans le fichier
debug.log
au démarrage de bitcoind :
InitParameterInteraction: parameter interaction: -proxy set -> setting -upnp=0
InitParameterInteraction: parameter interaction: -proxy set -> setting -discover=0
[...]
torcontrol thread start
[...]
tor: Got service ID [VOTRE_ID] advertising service [VOTRE_ID]:8333
addlocal([VOTRE_ID].onion:8333,4)
- Vous pouvez aussi contrôler les informations retournées par la commande
getnetworkinfo
:
On voit ici que les 3 réseaux sont liés au proxy 127.0.0.1:9050
, qui correspond à Tor. On voit également que le réseau onion
est ouvert grâce à la ligne reachable: true
.
- Votre nœud est-il bien joignable par les autres pairs sur le réseau ?
Pour le savoir, connectez-vous à cette page et copiez/collez l'adresse .onion
de votre nœud dans cette fenêtre:
Si le site n'arrive pas à joindre votre noeud, pas d'inquiétude, ça lui arrive parfois. Réessayez quelques instants plus tard et en général ça passe sans problème.
- Enfin, vous pouvez également vérifier l'adresse à laquelle vos pairs vous voient grâce à cette commande (pour faire le
|
, Alt Gr + 6) :
bitcoin-cli getpeerinfo | grep local
Vous devriez voir une liste d'adresse IP inconnues. Si vous voyez encore votre véritable adresse IP publique dans cette liste, cela signifie qu'un de vos pairs est connecté avec vous sans passer par le réseau Tor, et donc que votre adresse IP est visible par le réseau.
- LND
- Votre adresse IP ne devrait plus apparaître avec les commandes
lncli getinfo
oulncli getnodeinfo [VOTRE_CLÉ_PUBLIQUE]
- Éclair
- Votre adresse IP ne devrait plus apparaître dans l'output de
eclair-cli getinfo
.
Vos nœuds Bitcoin et Lightning sont désormais en contact avec le reste du monde via le réseau Tor, et donc beaucoup plus difficile à repérer et à associer à votre emplacement physique.
Il faut néanmoins avoir conscience que Tor n'est pas une panacée, et reste vulnérable à un certain nombre d'attaques qui peuvent aller de la simple interruption du service à la désanonymisation complète de l'utilisateur.
J'espère que la configuration que j'ai proposée ici constitue un bon compromis entre performance et sécurité pour un utilisateur exposé à des risques disons "normaux".
Toutefois, vous pouvez choisir de diminuer encore davantage votre exposition au prix d'une plus grande difficulté à contacter d'autres nœuds (et donc potentiellement au risque de vous retrouver isolé du reste du réseau).
Pour ce faire, vous pouvez par exemple :
- N'accepter que les connexions avec d'autres nœuds ayant une adresse en
.onion
:
Dans bitcoin.conf
, ajoutez la ligne suivante :
onlynet=onion
Vous ne pouvez désormais vous connecter qu'à des pairs qui possèdent une adresse en .onion
.
- Désactiver totalement la recherche de pairs via DNS :
Dans bitcoin.conf
, ajoutez les lignes suivantes :
dnsseed=0
dns=0
Si vous ne savez pas ce que signifie DNS, vous pouvez lire la page Wikipédia.
Avec cette configuration, votre nœud est incapable de trouver des pairs par lui-même. C'est pourquoi il est vital de lui fournir une liste de quelques nœuds à contacter au lancement en ajoutant la ligne suivante toujours dans bitcoin.conf
:
addnode=[ADRESSE].onion(:port)
Il faut ajouter une ligne par adresse. Vous pouvez trouver des listes en ligne, par exemple sur cette page, mais personnellement je trouve que cela crée d'autres risques...
Pensez bien à redémarrer bitcoind pour que vos changements soient pris en compte.
<< Back: Bonus