Réseau TOR : principe de fonctionnement

vie privée 8 mars 2014

Suite à quelques questions un peu partout auxquelles je réponds généralement oralement, et surtout suite à un commentaire sur le tutoriel pour créer son propre site en .onion , je me rends compte que je parle régulièrement de TOR, mais que je ne vous ai jamais expliqué son mode de fonctionnement, pas toujours simple à appréhender quand on ne connait pas. Attention, je dis pas que c’est super compliqué ; juste, ça ne s’invente pas. On va donc voir ensemble et de façon relativement générale l’architecture de ce réseau.

« Darknet »… vous avez déjà entendu ce mot si vous suivez un peu l’actualité. Journaux télévisés, presse papier… ont à cœur de faire passer TOR pour un réseau où l’anonymat est garanti, permettant d’outrepasser les lois en toute impunité. Et ils n’ont pas fondamentalement tort : The Onion Router (le routeur en oignon) a été conçu dans ce but. Du moins, dans l’objectif de fournir une solution d’anonymisation complète à quiconque souhaite l’utiliser. Après, effectivement, libre à chacun de s’en servir comme il le souhaite : être anonyme, c’est tout d’abord protéger sa vie privée, se protéger soi et éventuellement ses contacts. Oui, certains en profitent pour vendre de la drogue, des armes… mais d’autres s’en servent pour contourner la censure mise en place par des gouvernements peu respectueux des libertés individuelles. Tout est question de point de vue. Ne pas généraliser.

Pourtant, on vous a toujours dit qu’on pouvait remonter à vous sur Internet, via votre fournisseur d’accès, qui peut lier votre nom/adresse physique à votre adresse IP (l’adresse de votre « box » sur le réseau Internet). L’IP est même considérée comme une donnée personnelle, c’est dire ! Les sites qui les collectent et les lient à un compte doivent même se déclarer à la CNIL.

Comment fait donc TOR pour empêcher tout ça, alors que votre trafic Internet passe tout de même par votre box ADSL ?

 

Principe général

TOR, c’est à la base un réseau mondial, comme l’Internet. Il l’utilise pour véhiculer ses données. Sauf qu’au lieu d’emprunter les chemins habituels, vos données se baladent dans une infrastructure différente : d’abord un nœud d’entrée, ensuite tout un tas de relais, et finalement un nœud de sortie.

Prenons un cas concret. Vous voulez visiter ce blog, de façon « classique ». Schématiquement, et en sautant l’étape de résolution du nom (les fameux DNS, qui convertissent un nom « humainement intelligible » comme open-freax.fr en l’adresse IP du serveur qui l’héberge), votre navigateur va envoyer une requête à mon serveur, pour lui demander s’il est « vivant » et lui demander de lui fournir le contenu demandé, la page d’accueil par exemple. Vous comprendrez bien que pour pouvoir vous servir le contenu, il faut que le serveur ait connaissance de votre IP. Et en plus, le chemin que parcourent les « paquets » entre vous et le serveur est généralement fonction de tout un tas de paramètres qui le rendent globalement statique, et donc facile à suivre.

Maintenant, vous avez installé TOR, et vous voulez visiter le même site, mais pour des raisons qui ne regardent que vous, vous ne voulez pas que j’aie connaissance de votre IP réelle. En installant TOR, vous aurez déployé sur votre machine un proxy local qui va intercepter les requêtes de votre navigateur, et les re-router au travers de TOR. Mais à la différence du cas précédent, l’itinéraire emprunté par les paquets est aléatoire, et va se perdre entre tous les relais répartis autour du globe. Notez en passant que n’importe qui peut décider d’installer un relais TOR sur son serveur 😉

Résultat : pour votre fournisseur d’accès, la communication visible n’est plus directement celle entre vous et mon serveur, mais entre vous et le nœud d’entrée, qui en plus change régulièrement de façon transparente pour vous. Et pour le serveur, eh bien… même principe : pour lui, l’ordinateur qui demande à accéder à une page, c’est le nœud de sortie. Qui change aussi de temps en temps.

Et au milieu de tout ça, il y a les relais, qui n’ont que faire de votre IP, et ne gardent normalement aucune trace de ce qui transite par eux.

Ça y est, c’est plus clair dans vos têtes ? :mrgreen:

 

Un peu plus en détail…

Où l’on comprend l’analogie avec l’oignon

Pour les plus curieux d’entre vous, on va voir un peu plus précisément ce qu’il se passe lorsque vous utilisez TOR. On se détend, c’est plus compliqué pour les paquets IP que pour vous 😉

 

Fonctionnement de TOR - Image CC By-SA Bits of Freedom
Fonctionnement de TOR – Image CC By-SA Bits of Freedom

 

 Routage

C’est la première des particularités de TOR : le mode de routage (le fait de recevoir et transmettre des paquets) favorise l’anonymisation des flux. On parle ici de « circuit » : votre proxy va établir un chemin international par lequel transiteront vos connexions. Pour chacun des relais, c’est simple : un relais donné n’a connaissance que du relais précédent, et du relais suivant. Un relais n’est donc pas capable de retracer le chemin complet d’un paquet qui lui parviendrait. C’est essentiel !

 

Chiffrement

C’est l’autre grosse particularité, celle qui évoque le plus les couches de l’oignon. Avant d’êtres transmises par le proxy au nœud d’entrée, vos données sont chiffrées. Plusieurs fois, en plus. Explications :

  • votre proxy calcule l’itinéraire de vos paquets et établit un circuit. Il va donc choisir des points d’entrée/sortie, et des relais. Chacune de ces machines a sa propre clé publique.
  • vos paquets sont chiffrés une première fois, avec la clé du dernier nœud du circuit.
  • le résultat obtenu est chiffré avec la clé de l’avant-dernier nœud du circuit.
  • et ainsi de suite…
  • jusqu’à chiffrer le « truc » obtenu par ces chiffrement successifs avec la clé publique du nœud d’entrée.

Vous savez maintenant pourquoi on parle de couches 😉

Pourquoi est-ce qu’on s’embête comme ça ? Simplissime : on chiffre avec des clés publiques, et donc seule la clé privée associée permet de déchiffrer le message. Dans notre cas, le fait que plusieurs chiffrements successifs soient effectués fait qu’aucun des relais n’est capable de déchiffrer entièrement les paquets et de prendre connaissance de leur contenu. Sauf le nœud de sortie, mais c’est normal : il faut que les données soient en clair pour être envoyées au destinataire final ! 🙂

 

Résumons

En gros : sur votre machine, le proxy TOR calcule un itinéraire, récupère les clés publiques des nœuds associés, et chiffre vos données avec ces clés publiques, tour à tour. Les données sont chiffrées entre votre ordinateur et le nœud d’entrée, qui déchiffre « sa partie » et transmet au suivant, qui fait de même, et ainsi de suite. Le paquet chiffré perd une « couche » de chiffrement à chaque saut, jusqu’au moment où il va atteindre le nœud de sortie : ce dernier va faire sauter la dernière couche de chiffrement, et transmettre le paquet en clair à son destinataire final.

 

Comment ça « en clair » ?!

Eh oui. C’est le seul « hic » : TOR ne peut pas assurer (au sens strict du terme) la confidentialité des échanges, puisque le dernier maillon de la chaîne est en clair. Autrement dit, dans le cas d’une confidentialité stricte, seuls vous et le serveur final auriez connaissance du contenu du paquet. Dans le cas de TOR, il faut y ajouter le nœud de sortie, même s’il est incapable de dire d’où provient le paquet.

Vous pouvez donc théoriquement être « écoutés » entre le nœud de sortie et le destinataire final de la communication. Et donc, utiliser TOR ne doit en rien vous dissuader de chiffrer vos fichiers, mails, communications… et d’utiliser le « https » lorsque cela est possible. D’ailleurs, l’extension HTTPS Everywhere dont je parlais rapidement ici est intégrée au navigateur TOR.

 

Et pour le retour ?

Très juste : on a causé du trajet « aller », mais pas du retour, or si les relais ne peuvent pas déterminer l’itinéraire complet, comment peuvent-ils amener la réponse du serveur destinataire jusqu’à vous, qui demandez à consulter une ressource donnée ?

C’est là que ça se complique. Bien sûr, les tunnels établis au fur et à mesure dans le circuit sont bi-directionnels. Mais encore faut-il que le relais sache si le paquet qu’il reçoit fait partie d’une trame qui vous est destinée, ou si elle est pour quelqu’un d’autre qui aurait une portion de circuit commune avec vous.

Eh bien, les relais ajoutent à tout un tas de mécanismes ce qu’on appelle un time pattern (motif temporel) Pour faire simple, on va faire une analogie avec un message échangé en morse : vous envoyez des signaux lumineux, puis attendez un certain laps de temps, puis transmettez la lettre suivante, et ainsi de suite. Cela forme un motif, par définition régulier et répétitif. C’est le même système qui est utilisé entre les relais de TOR. Système qui peut par ailleurs être détourné par un attaquant pour identifier des flux et les séparer, afin de les écouter… Mais c’est hors de notre propos.

 

Elle était facile ;-) - Image CC By-SA Le Geektionnerd
Elle était facile 😉 – Image CC By-SA Le Geektionnerd

 

Quelques limites

Utiliser TOR, c’est bien. Mais cela ne vous empêche pas de prendre/garder d’autres bonnes habitudes pour éviter de vous faire piéger. L’anonymat assuré n’est que partiel : TOR ne vous protège pas de tout, et ne peut rien en lui-même contre des scripts qui récupéreraient votre adresse IP réelle (mais des extensions comme NoScript peuvent vous aider), ou contre des connexions qui utiliseraient UDP au lieu de TCP. Il s’agit de deux protocoles de communication sur Internet. TOR anonymise très bien les paquets TCP, mais pas les paquets UDP. À titre d’exemple : les requêtes DNS effectuées par votre navigateur sont faites en UDP, et révèlent donc vos habitudes de navigation. Pensez à installer tout ce qui va bien, l’extension Firefox « TOR button » par exemple, qui permet de re-router les requêtes DNS via TOR, en plus de proposer d’autres fonctions utiles (comme le changement de nœud de sortie).

J’en ai parlé plus ou moins clairement par deux fois déjà, mais je le rappelle : la communication entre le dernier nœud et le reste du net est en clair : aussi, prenez vos précautions (chiffrement de tout ou presque, utilisation du https lorsque cela est possible…), parce que ce trafic précis peut être « sniffé », et cela s’est déjà produit (un pirate suédois du nom de Dan Erstad a révélé tout plein d’infos en 2007, pour en savoir plus, direction DuckDuckGo 😉 ).

Il existe cependant des distributions Linux spécialisées, qui intègrent TOR en profondeur, faisant passer l’ensemble des communications sans exception par ce réseau, comme Tails. Ça vaut le coup d’y penser 😉

 

Et c’est légal ?

Sachez que je ne cautionne pas du tout les médias « grand public » qui font passer TOR pour un réseau de délinquants, en attente d’être identifiés par la gendarmerie.

L’outil lui-même est tout ce qu’il y a de plus légal. À vous de choisir de l’utiliser, ou pas. On ne va pas vous traîner devant un tribunal au simple motif que vous avez utilisé le réseau TOR.

Par contre : l’utilisation que vous en faites peut être légale, ou non. Se procurer 500g de Marijuana, c’est aussi légal via TOR que dans la rue. Soyez-en bien conscients.

 

Pour l’autre question qui revient régulièrement : les relais et nœuds d’entrée/sortie. Utiliser TOR, oui. Héberger soi-même un relais, c’est autre chose. En effet, si vous hébergez un nœud de sortie, on a vu que les communications sont en clair entre ce nœud (aka vous au travers de votre IP) et le reste du réseau Internet. Si une andouille achète un bon kilo d’anthrax en utilisant votre nœud et que cette communication est enregistrée ? Êtes-vous responsables ?

Eh bien d’après le Code des Postes et des des communications électroniques (cf. article L32-3-3), tant que vous ne sélectionnez pas quelles communications passent et que vous ne modifiez rien, vous n’êtes pas responsable. Vous n’êtes qu’un simple transporteur d’informations, qui n’émanent pas de vous ! La loi européenne appelle cela un mere conduit, et pour vous en convaincre, direction l’article 12 de la Directive 2000/31/CE du 8 juin 2000. Voilà voilà.

 

Pour finir !

Comme d’hab’, on va faire court, l’essentiel a été dit à plusieurs reprises, et vous n’aviez qu’à suivre 😀

J’espère avoir pu éclaircir un peu votre vision de cet amas de relais qui font transiter nos pixels et chatons en essayant de les rendre les plus anonymes possible.

L’efficacité de TOR en la matière est indéniable, mais le réseau n’est pas à l’abris de failles, d’attaques… aussi, il est crucial d’en rajouter une couche ( :mrgreen: ) et de faire le maximum pour sécuriser vos communications « comme si » elles ne passaient pas via TOR. Vous avez les clés en main, utilisez-les, vraiment.

Bonne navigation à travers TOR, et au passage, passez faire un coucou à « Nos Oignons », une asso française qui finance et maintient des nœuds de sortie pour aider l’ensemble des utilisateurs à naviguer plus rapidement tout en contournant censure, espionnage, et autres formes d’atteinte aux libertés.

Mots clés