Tor (réseau)

Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir Tor.
TOR
Développeur Roger Dingledine
et Nick Matthewson
Dernière version 0.1.2.19 (le 17 janvier 2008)
Version avancée 0.2.0.20 RC (le 24 février 2008)
Environnement Windows, Mac OS X, Linux, BSD, Unix
Licence Licence BSD
Site web www.torproject.org

The Onion Router ou Tor (littéralement : le routage en oignon) est un réseau mondial décentralisé de routeurs, organisés en couches, appelés nœuds de l'oignon, dont la tâche est de transmettre de manière anonyme des paquets TCP. C'est ainsi que tout échange Internet basé sur TCP peut être anonymisé en utilisant Tor. Tor est un logiciel libre distribué sous licence BSD révisée.

Sommaire

[modifier] Le routage en oignon dans Tor

Le routage en oignon fut conçu à partir de l'appréciation des carences des systèmes pré-existants (notamment les serveurs mandataires) qui ne suffisent pas à garantir l'anonymat d'un individu.

Tor est la seconde génération de système de routage en oignon (la première génération contenait beaucoup de défauts et n'a donc jamais eu de vrai succès).

[modifier] Vue d'ensemble

Le routage en oignon utilise diverses techniques pour faire rebondir un échange TCP au sein d'Internet afin que des analyses de trafic sur une partie du réseau (notamment par attaque de l'homme du milieu) ne puissent pas identifier un utilisateur. Dans la suite de l'article, on suppose vouloir échanger un paquet entre un client et un serveur (voir Client-serveur).

[modifier] Construction d'un circuit

Ayant accès à la liste des nœuds de Tor, chaque client doit y choisir un chemin aléatoire (il pourra en changer au bout d'un certain intervalle de temps), puis construit un circuit au sein duquel chaque nœud a la propriété de connaître son prédécesseur et son successeur, sans en savoir plus.

Cette construction fait appel au concept de cryptographie hybride. Chaque nœud d'oignon possède une clef publique, mais la cryptographie à clef secrète est bien plus rapide que celle à clef publique. L'idée est donc de distribuer à chaque nœud du circuit une clef secrète chiffrée avec leur clef publique.

Après la phase de construction, chaque nœud du circuit a une clef secrète qui lui est propre et ne connaît que son prédécesseur et son successeur au sein du circuit.

[modifier] Échange de paquets

Pour acheminer un paquet au serveur, le client doit chiffrer son paquet de nombreuses fois :

  • la première fois, le client chiffre son paquet TCP avec la clef secrète correspondant au dernier nœud, numéroté n.
  • la deuxième fois, avec celle de l'avant-dernier nœud, numérotée n-1.
  • la troisième fois, avec celle de n-2.
  • la quatrième fois, avec celle de n-3.
  • ...
  • la dernière fois, avec celle du premier nœud, numérotée 1.

À ce stade, toutes les couches de l'oignon enferment le paquet TCP. Voyons comment est pelé l'oignon : lorsque le client envoie ce paquet au circuit qu'il a construit :

  • le premier serveur du circuit déchiffre le paquet avec la clef 1 et l'envoie au deuxième serveur.
  • le deuxième serveur déchiffre ce paquet avec la clef 2.
  • ...
  • le dernier serveur déchiffre ce paquet avec la clef n et obtient le paquet original.

En pratique, un client du réseau Tor peut configurer son navigateur web pour utiliser un serveur mandataire personnel qui donne accès à Tor (comme Privoxy). Voici le déroulement d'une visite de Wikipédia par ce client :

  • Son navigateur envoie la requête HTTP à Privoxy.
  • Privoxy retranche l'information non anonyme, passe l'information via SOCKS au client Tor. Le client construit un circuit (si ce n'est déjà fait), chiffre les données à envoyer, et les passe au premier nœud.
  • Ce premier nœud déchiffre une partie de l'enveloppe et fait suivre les données jusqu'à atteindre le nœud de sortie.
  • Ce nœud de sortie envoie la requête à Wikipedia.

La même chose se passe en sens inverse. L'échange est ainsi anonyme, mais est cependant très ralenti.

[modifier] Un anonymat partiel

Tor ne peut assurer la protection de paquets UDP, et n'en soutient donc pas les utilisations, notamment les requêtes aux serveurs DNS, pourtant nécessaires à la navigation web et extrêmement révélatrices des habitudes de navigation du client. Cependant Tor offre la possibilité de router les requêtes DNS à travers son réseau, notamment à l'aide de la commande "torify".

Par ailleurs, tout site web peut disposer sur ses pages un applet Java qui lui renvoie l'adresse IP de ses clients, annulant ainsi l'efficacité de Tor, qui avait justement pris soin de masquer cette information. Il est difficile de se prémunir de cette parade, car bloquer l'exécution de ce type de code bloque également des fonctionnalités parfois indispensables aux services rendus par un site.

  • Attaque de type "Time Pattern" :

Tor permet d'empêcher un attaquant de suivre le chemin pris par une connexion. Cependant, s'il ne peut reconnaître le contenu du flux, il existe des moyens dont le principe est en quelque sorte lié au problème des canaux cachés. Par exemple, envoyez un flux comme du code morse : 3 paquets envoyés en salve, puis 5 secondes de silence, puis 3 paquets, etc. Lorsque vous verrez un flux sortir d'un nœud Tor et dont le "motif temporel" ressemble à celui-ci, alors vous saurez que c'est le vôtre.

Selon ce principe, vous pouvez chercher à attribuer une signature temporelle à un flux que vous essayez de suivre, ce qui vous permettra peut-être de le faire. Un attaquant peut d'ailleurs augmenter ses chances en donnant lui-même un motif temporel au flux qu'il cherche à suivre. C'est en effet chose possible. Comme au sein d'un nœud tous les paquets sont transférés par le biais d'une machine commune et se partagent donc les ressources du système, un attaquant peut inonder un nœud de ses propres paquets pour moduler un ralentissement de la machine comme il l'entend, et ainsi créer une signature temporelle pour les flux qui traversent ce nœud précis.

Ces deux types d'attaques sont très différents et posent de nombreuses questions. La première montre que même si le réseau Tor protégeait parfaitement votre anonymat, des moyens simples peuvent le contourner complètement et fortement compromettre son efficacité. Le second exemple est plus destiné à montrer que bien que Tor reste un outil formidable, on peut l'attaquer directement, et il n'est donc pas un paradis pour hackers.

[modifier] Polémique

L'existence d'un tel réseau est sujet à polémique : certains anonymats sont moins sains que d'autres.

La communauté Tor avance l'argument que les gredins utilisent déjà d'autres techniques (vol, piratage, ingénierie sociale, etc.) et que certains échanges ne peuvent se faire qu'à la condition de l'anonymat (en particulier : les informateurs, les réseaux militants...)

Malgré tout, les opposants arguent de la facilité avec laquelle des activités malsaines peuvent être menées sans qu'aucune archive ne puisse incriminer les fautifs. (La police allemande a saisi en septembre 2006 des serveurs du réseau Tor dans le cadre d'une enquête anti-pédophiles). On peut parler de réseaux d'impunité car les nœuds sont localisés dans le monde entier et il est déjà difficile de s'accorder sur une législation à l'échelle d'un pays.

La liste des serveurs Tor étant connue (par nécessité et par volonté des responsables du logiciel), certains sites web et canaux IRC ont bloqué l'accès à leurs données par le réseau Tor.

[modifier] Autres réseaux d'anonymisation

[modifier] Liens externes