Le routage oignon et les hidden services

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Pour finir la série d’article sur l’anonymat sur Internet je me devais de vous présenter le routage oignon. Vous l’avez compris, aujourd’hui on va parler du réseau TOR (The Onion Router).

Je ne m’attarderai pas à faire une description du Deep Web ou encore a alimenté les rumeurs et les légendes qui l’entourent. Ici nous allons nous intéresser seulement à la partie technique.

I/Le réseau TOR

De toutes les techniques que nous avons vu jusqu’à présent (VPN et proxies), le réseau TOR est la méthode la plus sûre si vous voulez être anonymes sur le web.

Le réseau TOR est constitué de plusieurs machines que l’on appelle des nœuds TOR. Chacun de ces nœuds est mis à disposition des utilisateurs et agit comme un proxy.

Avant chaque début de communication, le client TOR va accéder à un serveur qui contient l’ensemble des nœuds TOR (un annuaire en somme). A l’aide de cet annuaire il va aléatoirement créer un chemin composé de plusieurs nœuds, qui part de votre PC et qui finit chez le destinataire.

tor1

Crédit image : http://www.torproject.org

Lors de la création du chemin, le client TOR va contacter chacun des nœuds afin de créer une paire de clé privée/publique qui serviront au chiffrement/déchiffrement.

Chacun de ces nœuds disposera de deux informations :

-La clé privée négociée avec le client TOR qui lui permettra de chiffrer le message.
-Le nœud TOR qui lui précède et celui qui lui succède de telle sorte que si les nœuds TOR sont A B C D E F alors C connaît B et D mais pas A, E ou F.

Cela implique qu’aucun des nœuds du chemin ne connaît le chemin dans sa totalité et donc aucun des nœuds ne peut être utilisé afin de déterminer qui est la source et/ou le destinataire du message.

Ensuite, le client TOR va chiffrer le message avec chacune des clés publiques qu’il a -au préalable- défini avec les nœuds :

tor2Crédit image : http://www.openclassroom.com

S’il y a trois nœuds : A, B et C alors il y aura trois couches de chiffrement différentes. Le message sera chiffré en premier avec la clé publique négociée avec le denier nœud TOR du chemin (C) puis avec la clé publique du nœud B et enfin celle du nœud A. Le message étant chiffré, il peut être envoyé sur le réseau :

noeudtor
Crédit image : http://www.torproject.org

Du PC d’Alice au premier nœud, le message aura trois couches de chiffrement (A, B et C). Lorsqu’il arrivera au niveau du premier nœud (A), la première couche de chiffrement sera supprimée. Il restera donc la couche B et C. Le message va ensuite être envoyé au nœud B qui va enlever la couche B. Quand le message arrivera au nœud C, la dernière couche de chiffrement sera enlevée. Donc le message sera en clair (symbolisé par la liaison en rouge) et envoyé au destinataire.

A chaque nœud TOR, le message perdra donc une de ses couches de chiffrement. Chaque nœud pourra déchiffrer une couche de chiffrement à l’aide de la clé privée négociée lors de la création du chemin.

Le message atteint le destinataire et c’est à ce moment là que sera faite la résolution DNS. Puis le destinataire renvoie une réponse qui sera à son tour chiffrée par chaque nœuds puis déchiffré par le client TOR. Si la communication dure plus de 10 minute alors un nouveau chemin sera établi par le client TOR.

Même si le réseau TOR nous promet un certain anonymat on se rend rapidement compte qu’il y a quelques failles. La première réside dans la conception même de TOR en effet le dernier nœud déchiffre la dernière couche du message et donc il a accès au message en clair. Si le serveur est vérolé ou appartient à un pirate alors ce dernier peut stocker les informations telles que des identifiants, numéros de carte bleu etc…

Il faudra donc lorsque vous naviguez sur le réseau TOR privilégiez une connexion HTTPS mais encore une fois on a vu dans différents articles que le HTTPS n’était pas un gage de sureté.

Autre conséquence de cette architecture, si un pirate se positionne en Man In The Middle entre le destinataire et le dernier noeud du réseau alors il pourra intercepter/modifier le contenu de la requête. On peut donc imaginer toute sorte de déviance (coucou le javascript).

Il y a eu de nombreuses recherches de faite afin de détecter les failles du réseau. Pas mal de choses sont trouvables sur ce site. Je vous conseille fortement de le lire, le contenu de l’article est vraiment incroyable.

Bon là on a vu comment fonctionnait le réseau TOR pour de la navigation régulière. Mais ce qui fait que le réseau TOR est si apprécié des pirates c’est les hidden services.

II/ Les Hidden Services

Le principe d’un hidden service c’est que l’émetteur de la requête ne sait pas où se trouve le destinataire et en plus de ça, l’émetteur ne se connecte jamais réellement au destinataire et donc à aucun moment l’émetteur ne connaît l’adresse IP du serveur.

Lors d’une connexion régulière, le client se connecte à un serveur. Pour cela le client utilise une URL qui est traduite en une adresse IP par un DNS puis le client va envoyer une requête via l’adresse IP au serveur concerné. Le serveur lui renvoie une réponse et blablabla : les deux communiquent.

Avec un hidden service c’est pas tout à fait pareil. La première chose à faire quand on veut lancer un hidden service c’est de déclarer son existence sur le réseau Tor. Pour cela, le hidden service va créer une paire de clé privée et publique. Puis il va choisir aléatoirement des nœuds du réseau et va leur demander d’agir comme des points d’introduction en leur donnant sa clé publique.

introductionpoint.png
Crédit image : http://www.torproject.org

Attention, les flèches en vert désignent un circuit TOR et non pas une connexion directe. Entre IP1, IP2, IP3 et le serveur Bob il y a plusieurs nœuds TOR.

Ensuite, le hidden service va créer un « hidden service descriptor » qui contient sa clé publique ainsi qu’un résumé de ses différents points d’introduction sur le réseau TOR. Ce descriptor va être signé à l’aide de la clé privée du hidden service et uploadé dans une table de hachage distribuée.

uploaddescriptor.png
Crédit image : http://www.torproject.org

Une table de hachage c’est une structure de données dans laquelle une clé est liée à une valeur. Pour la suite de l’opération il faudra que le client connaisse l’adresse .onion du hidden service. Ces adresses sont des suites de caractère (16 caractères) qui semblent être créer aléatoirement alors qu’en fait pas du tout. En voici un exemple :

http://azedspl4p12654sd.onion/

Chaque adresse .onion est dérivée de la clé publique du hidden service. Il existe différentes listes de hidden services la plus connue étant hébergée sur le site hiddenwiki.

Donc après avoir récupéré l’adresse onion du hidden service, le client va se connecter au serveur qui héberge la table de hachage distribuée et va demander des informations concernant l’adresse .onion. S’il existe un descriptor pour l’adresse .onion recherchée alors le client va télécharger le descriptor et il aura accès à deux informations :
-Les points d’introduction au hidden service
-La clé publique utilisée pour chiffrer les communications

A ce moment là, le client va initier une nouvelle connexion à travers le réseau TOR jusqu’à un « point relai » qui va agir comme un point de rendez vous.

relaipoint.png
Crédit image : http://www.torproject.org

Le client va créer un message d’introduction (chiffré à l’aide de la clé publique) qui contient l’adresse du point de relai ainsi qu’un secret unique et l’envoyer à un point d’introduction en lui précisant qu’il veut que ce message soit forwardé au hidden service :

message.png
Crédit image : http://www.torproject.org

Le hidden service va déchiffrer le contenu du message à l’aide de sa clé privée et va donc découvrir l’adresse du point de rencontre ainsi que le secret qui lui permettra de s’identifier au client. Il va créer un nouveau circuit au sein du réseau TOR qui l’amènera jusqu’au point de rencontre et ensuite il enverra un message chiffré contenant le secret.

secret.png
Crédit image : http://www.torproject.org

Le point de rencontre va notifier le client qu’une connexion a été établie entre ce dernier et le hidden service et à partir de là, le client et le hidden service communiqueront à travers le point de rencontre qui agira comme un relai entre les deux.

Généralement il y a six nœuds utilisés dans ce genre de connexion. Trois d’entre eux sont choisis par le client (avec le dernier qui est en fait le point de rencontre) et les trois autres sont choisis par le hidden service.

Pour les plus curieux, vous trouverez une liste de quelques hidden services ici !


C’en est fini pour le réseau TOR, si vous avez des questions n’hésitez pas à me les poser dans l’espace commentaire ou directement en MP sur la page Facebook 😉

Et si vous voulez vous faire une idée de la puissance du réseau TOR je vous invite à consulter ce lien 😉 !

2 commentaires

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s