IMA4 2017/2018 P40 : Différence entre versions

De Wiki de Projets IMA
(Réalisation du Projet)
(Le routage en Onion)
Ligne 268 : Ligne 268 :
 
==État de l'art==
 
==État de l'art==
  
===Le routage en Onion===
+
===Présentation générale===
  
[[Fichier:Onion_routing.png|250px|thumb|right|Etablissement du circuit tor]]
+
[[Fichier:Onion_routing.png|250px|thumb|right|Établissement du circuit tor]]
  
 
''En cours de rédaction''
 
''En cours de rédaction''
  
Le routage en Oignon (dont Tor n'est qu'un exemple d'implémentation) est un réseau de surcouche distribué avec objectif d'anonymiser les application basées sur TCP comme la navigation sur le web, les connexions SSH, et les discutions instantannées. Le client qui souhaite utiliser l'application à traversun routage en Oignon doit choisir un chemin à travers le réseau pour y construire un circuit, en pratique dans le cas de Tor, le client passera par trois noeuds ( ou routeurs oignon ), chaque noeud connait son prédecesseur et son successeur, mais aucun des autres noeuds dans le circuit, si bien que le circuit réalisé au sein de Tor est semblable à une liste chainée. Chaque noeud passant le message de son prédécésseur à son succésseur.  
+
Le routage en Oignon (dont Tor n'est qu'un exemple d'implémentation) est un réseau de surcouche distribué avec objectif d'anonymiser les applications basées sur TCP comme la navigation sur le web, les connexions SSH, et les discutions instantanées. Le client qui souhaite utiliser l'application à travers un routage en Oignon doit choisir un chemin à travers le réseau pour y construire un circuit, en pratique dans le cas de Tor, le client passera par trois nœuds ( ou routeurs oignon ), chaque nœud connaît son prédécesseur et son successeur, mais aucun des autres nœuds dans le circuit, si bien que le circuit réalisé au sein de Tor est semblable à une liste chaînée. Chaque nœud passant le message de son prédécesseur à son successeur.  
  
Les messages circulent à travers le réseau au travers de cellules de tailles fixes dont nous discuterons plus tard. Le message est décrypté couche par couche à chaque passage d'un noeud, avant de passer au suivant, si bien que le message original est recouvert de couches d'encryptions, d'où la présence du nom "oignon".
+
Les messages circulent à travers le réseau au travers de cellules de tailles fixes dont nous discuterons plus tard. Le message est décrypté couche par couche à chaque passage d'un nœud, avant de passer au suivant, si bien que le message original est recouvert de couches de cryptage, d'où la présence du nom "oignon".
  
Tor n'est pas le premier logiciel à utiliser Tor, en vérité Tor, sorti en 2002 est le routeur oignon de seconde génération, succédant au routeur oignon original qui ne fut pas bien pratique et qui n'a jamais été utilisé pratiquement, seulement en théorie et pour des tests. Tor a apporté beaucoup au routage en Oignon, y compris ses heures de gloires, comme l'indique sa popularité. Mais aussi beauocup de fonctionalités qui n'existaient pas avant, comme les serveurs d'autorité, le contrôle de congestion, le controle d'intégrité, des politiques pour les noeuds de sortie. Il apporte aussi un élément important jusque là absent du routage en Oignon : Les services cachés, dont nous parlerons plus tard.
+
Tor n'est pas le premier logiciel à utiliser le routage en Oignon, en vérité Tor, sorti en 2002 est le routeur oignon de seconde génération, succédant au routeur oignon original qui ne fut pas bien pratique et qui n'a jamais été utilisé pratiquement, seulement en théorie et pour des tests. Tor a apporté beaucoup au routage en Oignon, y compris ses heures de gloires, comme l'indique sa popularité. Mais aussi beaucoup de fonctionnalités qui n'existaient pas avant, comme les serveurs d'autorité, le contrôle de congestion, le contrôle d'intégrité, des politiques pour les noeuds de sortie. Il apporte aussi un élément important jusque là absent du routage en Oignon : Les services cachés, dont nous parlerons plus tard.
 +
 
 +
De plus, d'autres réseaux de surcouches ayant pour but l'anonymat existent, comme nous l'avons évoqué dans l'introduction, ils ont des approches différentes, bien que l'idée de faire "rebondir" la connexion en l'encryptant avec différentes couches est tout de même assez commune. Dans le monde des réseaux d'anonymat, Tor fait partie de ceux à faible latence, ce qui lui permet de supporter la navigation sur internet, tandis que d'autres à haute latence ne permettent que des choses peu "temps réel", comme l'envoi de mail ou le partage de fichier.
 +
Il faut tout de même savoir que la faible latence a un coût, elle implique que le réseau soit plus sensible aux attaques passives et actives que nous verrons par la suite. Mais toujours est-il qu'un réseau à faible latence attire plus d'utilisateurs, et plus d'utilisateurs implique plus de noeuds, donc plus de sécurité. C'est d'ailleurs la raison pour laquelle Tor se veut très portable et utilisable, l’équipe du Tor Project tiens absolument à ce que Tor soit standard, et qu'il ne nécessite aucun patch de noyau. Tor fonctionne sur un internet tout à fait classique, plus précisément sur les streams TCP. Il faut noter qu'il existe des réseaux d'anonymat qui fonctionne sur les protocoles applicatifs, comme Crowds qui utilise HTTP,ou même directement sur IP, Tor Project se place donc au milieu, il a le défaut de ne supporter que TCP, mais il n'a pas besoin de patch noyau pour faire fonctionner des protocoles inconnus des developpeurs, et il permet une flexibilité de toutes les applications basées sur TCP ( ce qui n'est pas non plus négligeable ).
 +
 
 +
 
 +
Tor fonctionne grâce à deux routines, l'une coté client appelée le proxy oignon qui se charge d’interroger les serveurs répertoires afin d'avoir le consensus périodiquement, à établir des circuits au travers du réseau, et à gérer les connexions requises par les applications de l'utilisateur, et l'autre coté noeud se connecte aux destinations requises, relaie les données, et réponds aux requête de Diffie-Hellman ( cf Annexe ).
  
 
A propos des serveurs d'autorités, appelés aussi serveurs répertoires, il s'agit de serveurs de confiances dont le but est de communiquer à qui souhaite l'entendre le ''consensus'', qui est le fichier qui contient l'ensemble des informations sur le réseau Tor, à savoir la liste des noeuds, leur adresse ip, leur clef publique d'identifiant, ainsi que leur politique de sortie si il s'agit d'un noeud de sortie. Il est donc important de noter que les noeuds du réseau Tor sont divulgés publiquement ! Ce n'est pas le cas des bridges que nous verrons plus tard.
 
A propos des serveurs d'autorités, appelés aussi serveurs répertoires, il s'agit de serveurs de confiances dont le but est de communiquer à qui souhaite l'entendre le ''consensus'', qui est le fichier qui contient l'ensemble des informations sur le réseau Tor, à savoir la liste des noeuds, leur adresse ip, leur clef publique d'identifiant, ainsi que leur politique de sortie si il s'agit d'un noeud de sortie. Il est donc important de noter que les noeuds du réseau Tor sont divulgés publiquement ! Ce n'est pas le cas des bridges que nous verrons plus tard.
  
Tor fonctionne grâce à deux routines, l'une coté client appelée le proxy oignon qui se charge d'interoger les serveurs répertoires afin d'avoir le consensus périodiquement, à établir des circuits au travers du réseau, et à gérer les connexions requises par les applications de l'utilisateur, et l'autre coté noeud se connecte aux destinations requises, relaie les données, et réponds aux requête de Diffie-Hellman ( cf Annexe ).
+
===Cellules===
 
+
L'unité de communication au sein du réseau Tor sont les cellules, il s'agit d'une trâme de 512 octets de long, avec un en-tête (on vient rajouter une encapsulation à TCP/IP, on encapsule l'application TCP, HTTP par exemple, dans une cellule Tor). En fonction du bit CMD, une cellule est soit une cellule de données, soit une cellule de contrôle. Dans le cas de cellule de contrôle, elle sera interprétée par le routeur Oignon qui la lira, en cas de cellule de données, elle sera juste transmise et servira de communication point à point au sein du réseau.
====Cellules====
 
L'unité de communication au sein du réseau Tor sont les cellules, il s'agit d'une trâme de 512 octets de long, avec un en-tête (on vient rajouter une encapsulation à TCP/IP, on encapsule l'application TCP, HTTP par exemple, dans une cellule Tor). En fonction du bit CMD, une cellule est soit une cellule de données, soit une cellule de contrôle. Dans le cas de cellule de controle, elle sera interprétée par le routeur Oignon qui la lira, en cas de cellule de données, elle sera juste transmise et servira de communication point à point au sein du réseau.
 
  
 
Les cellules de contrôle plusieurs rôles, elles peuvent être utilisées pour créer un nouveau circuit, faire du remplissage (padding) afin de garder la connexion active, ou bien décruire un circuits.
 
Les cellules de contrôle plusieurs rôles, elles peuvent être utilisées pour créer un nouveau circuit, faire du remplissage (padding) afin de garder la connexion active, ou bien décruire un circuits.
  
 
Les cellules de données quand à elles ont une en-tête supplémentaire, comportant un ID de stream servant à identifier le stream correspondant au message ( car plusieurs streams TCP peuvent avoir lieu sur le même circuit ), un checksum pour vérifier l'intégrité du message à chaque noeud, la longeur des données, ainsi qu'une commande de relai
 
Les cellules de données quand à elles ont une en-tête supplémentaire, comportant un ID de stream servant à identifier le stream correspondant au message ( car plusieurs streams TCP peuvent avoir lieu sur le même circuit ), un checksum pour vérifier l'intégrité du message à chaque noeud, la longeur des données, ainsi qu'une commande de relai
 +
 +
===Noeuds===
 +
 +
===Etablissement d'un circuit===
 +
 +
===Echange de clefs Diffie-Hellman===
  
 
===Web classique ''torifié''===
 
===Web classique ''torifié''===

Version du 20 février 2018 à 19:18


Présentation générale

Description

Logo de Tor

Notre projet s’intitule "Exploration du réseau d'anonymisation Tor" et consiste à découvrir le principe de fonctionnement de ce dit réseau pour ensuite le mettre en pratique et enfin l’analyser en profondeur. Tor (Acronyme de "The Onion Router", le routage en oignon), est un réseau mondial décentralisé apparu en 2002 en version alpha et qui permet de lutter contre la surveillance et la censure. Sous le terme décentralisé se cache des milliers de serveurs mis à disposition par des bénévoles. Ces machines, appelées noeuds, agissent comme des relais pour permettre une anonymisation des connexions internet. Lorsqu’on fait référence à Tor, l’amalgame est souvent fait avec le logiciel Tor Browser, qui lui n’est qu’un navigateur (basé sur Firefox) qui envoie les connexions dans le réseau Tor. L'appellation du protocole “routage en oignon” fait référence à la manière dont les données sont encapsulées puis “épluchées” au cours d’un trajet dans un circuit tor.

Tor est utilisé dans deux situations :

  • Accéder au web "normal" : la requête émise par l'utilisateur est transférée jusqu'au serveur ciblé par un circuit composé de trois nœuds.
  • Accéder aux services cachés : l'utilisateur et le serveur ciblé s'entendent sur un point de rendez-vous pour communiquer.

Objectifs

Ce projet peut se découper en trois grandes parties. En premier lieu, nous commencerons par un travail bibliographique afin de nous forger des connaissances solides sur le réseau Tor. Suivra une partie où nous mettrons en application notre savoir au travers de trois expériences qui seront : la navigation sur Internet avec le réseau Tor, la création d’un noeud et finalement l’hébergement d’un service caché. La troisième partie sera consacrée à des tests d’efficacité du réseau. Nous visualiserons les requêtes reçues par un serveur web (sous notre administration) lorsqu’on accède à celui-ci via Tor. Nous évaluerons ensuite la vulnérabilité des nœuds du circuit. Enfin, nous nous attaquerons à une autre particularité de Tor, à savoir les services cachés. A nouveau, nous testerons les limites de cette fonctionnalité pour voir par exemple s’il est possible de déterminer la localisation du serveur hébergeant le service. Evidemment, s'agissant d'un projet d'exploration, cette liste d’objectifs est sujette au changement et pourra se voir allongée par la suite, du moins nous l'espérons.

Analyse du projet

Positionnement par rapport à l'existant

A l’heure d’aujourd’hui, quand on parle d’anonymisation, Tor est souvent le seul service évoqué. Bien que ce ne soit pas le cas, il est vrai qu’il possède une place de leader dans son domaine. Ce qui le rend si populaire est sans doute la simplicité des applications gravitant autour de ce réseau, le tout accompagné d’une communauté très active. Pour ne citer qu’un exemple, Tor Browser s’installe en quelques minutes de la même manière que Firefox. Sa seconde force réside dans sa capacité à pouvoir accéder au web "normal" sans que le serveur ciblé ne connaissent l’origine de la connexion. Tor a été conçu pour ce genre d'utilisation, c’est pour cela que les connexions aux services cachés sont plus lentes que sur d'autre réseau d'anonymisation. Mis à part les aspects purement techniques et les raisons ci-dessus, rien d'autre ne pourrait distinguer Tor de ses concurrents.

Analyse du premier concurrent

Logo d'I2P

I2P et Tor sont conçus pour permettre la mise en relation de deux machines sans révéler leur adresse IP réelle et sont donc assez similaire sur le principe. Bien qu’il soit également possible d’accéder au web "normal" avec I2P, ce n’est pas son but premier. Ce réseau privilégie l’utilisation des services cachés, de ce fait il est plus rapide d’y naviguer dessus. En terme de différence technique, on peut citer le fait que les tunnels (équivalent des circuits Tor) sont unidirectionnels contrairement à Tor.

Analyse du second concurrent

Logo de Freenet

Freenet possède quant à lui un autre type d’usage en proposant le partage de fichiers de manière anonyme et résistante à la censure. En effet, contrairement à Tor et I2P, Freenet assure la pérennité des données grâce à une redondance des fragments de fichiers. Freenet est sur ce point similaire au protocole BitTorrent puisqu’un utilisateur téléchargeant un fichier est susceptible de le redistribuer plus tard à condition de toujours l’avoir en cache. En plus de sa bande passante, l’utilisateur est libre d’allouer une partie de son disque dur pour stocker les fichiers du réseau. Un fichier populaire, de par ce procédé, a plus de chance de rester disponible. Pour garantir l’anonymat, un client possède une liste de vingt nœuds qu’il peut interroger. Si aucun des nœuds ne possède ce fichier, ces vingts nœuds interroge à leur tour leurs voisins et ainsi de suite. Ainsi quand le fichier transite vers le client, aucun nœud ne sait si celui qui le précède est le demandeur.

Scénario d'usage du produit ou du concept envisagé

Alice est une journaliste dans un pays où les libertés individuelles sont bafouées, mais elle souhaite partager avec le reste du monde son quotidien en s’assurant que, dans un premier temps son gouvernement ne sache pas ce qu’elle envoie comme information, mais aussi qu’il ne sache pas à qui elle les envoie.

Alice peut donc utiliser le réseau Tor, afin dans un premier temps de crypter sous plusieurs couches SSL son message, mais également en passant par plusieurs noeuds pour brouiller les pistes qui voudraient remonter à elle ou au serveur avec qui elle communique.

Seulement, deux problèmes se posent à Alice, si elle communique avec Bob sur un réseau Tor Web classique, alors tout le trafic entre le nœud 3 et Bob sera en clair (il peut être crypté via https bien évidemment, mais il ne sera pas crypté d’un point de vue Tor), ainsi, on peut lire le contenu du message envoyé à Bob, et le corréler avec le contenu qui trafique dans les nœuds Tor pour remonter à Alice.

Ensuite, les nœuds du réseau sont publics, un gouvernement peut donc très bien en bloquer l’accès, voire pire, le rendre illégal et imposer des sanctions lourdes en dissuasion. Pour régler ce problème, Tor project propose d’envoyer dans un premier temps le software par un média non suspect (CD par exemple), et aussi dans un second temps d’allouer à Alice un bridge, un nœud d’entrée Tor complètement secret, réservé pour l’accès au réseau Tor dans les pays peu libres.

Ainsi, du point de vue du gouvernement qui essaierait de sniffer les paquets envoyés et reçus par Alice, ils ne verraient que du charabia sous SSL entre elle et un serveur qui n’a rien de suspect si c’est un bridge.

Réponse à la question difficile

La question difficile posée durant la présentation orale de notre sujet nous amène à analyser le comportement de Tor concernant le ciblage publicitaire mis en oeuvre par l’utilisation des cookies. Premièrement, il est bon de savoir que ce navigateur n'est qu'un fork du très connu Mozilla Firefox sur lequel il est possible d'utiliser le réseau d'anonymisation TOR. Rien que par ce premier point, on comprend rapidement que le réseau en tant que tel n'est nullement responsable du ciblage publicitaire. Tor n'est qu'un réseau permettant l'acheminement de paquets TCP, paquets pouvant encapsuler entre autres du HTTP/S. Il est donc tout à fait possible de retrouver une en-tête HTTP/S de type Set-Cookie ou Cookie qui permettra dans le meilleur des cas de faciliter la navigation de l'utilisateur ou pire de le cibler. Le ciblage, opéré principalement par les régies publicitaires, utilise ce que l'on appelle les cookies tierce partie. Lorsqu'on se connecte à une page web, notre client effectue des requêtes au serveur web qui sont dites internes quand le domaine correspond à celui sur lequel on se trouve ou tierce partie quand la cible est un domaine différent. Les cookies tierce partie désignent donc les cookies envoyés par ce tiers. Dès lors, peu importe le site consulté, le client sera en état de transmettre des infos d'un site interrogé auparavant à condition qu'ils aient la même régie. Les navigateurs Internet actuels permettent de désactiver les cookies tierce partie et Tor Browser a fait ce choix par défaut, n'autorisant que les cookies internes.

Préparation du projet

Cahier des charges

Choix techniques : matériel et logiciel

Ce projet purement informatique ne nécessite aucun matériel à l'exception d'un serveur connecté sur le réseau de l'école et ayant accès à la ligne SDSL. Du coté des logiciels, nous commencerons par exploiter Tor Browser et Firefox afin de naviguer sur Internet en passant par le réseau Tor. Nous verrons ainsi l'utilité d'utiliser la navigateur de la fondation Tor. Dans un second temps, nous créerons des machines virtuelles sur le serveur Chassiron afin d'ajouter un nœud au réseau Tor ou encore d’héberger un service caché (sur un serveur web tel que Nginx ou Apache). La mise en place de ces machines nécessitera les logiciels Xen (pour la virtualisation) et LVM (pour la création de volume logique). Finalement, nous installerons Tor pour être en mesure de communiquer sur ce réseau que nous contrôlerons totalement, et nous pourrons réaliser divers test (tcpdump par exemple) sur les machines virtuelles.

Concernant la partie analyse et sécurité, Wireshark ou tcpdump se révéleront être des outils pratiques pour analyser les paquets reçus sur une interface réseau.

Liste des tâches à effectuer

  • État de l'art technique : les recherches documentaires s’effectueront tout au long du projet mais beaucoup d'importance y sera consacré dans un premier temps.
  • Installation de Tor Browser et comparaison avec un Firefox classique.
  • Création et configuration d'un machine virtuelle connecté sur la ligne SDSL.
  • Ajout d'un nœud au réseau.
  • Installation d'un serveur web sur une autre VM pour héberger un service caché.
  • Mise en place d'un réseau privé Tor pour avoir la main sur l'ensemble de la chaîne de transmission.

Calendrier prévisionnel

Faire un Gantt

Réalisation du Projet

La segmentation en semaine ne se prêtant pas très bien à ce genre de projet, nous avons choisi de rester synthétique dans cette partie. Tous les points sont ou seront évidements explicités dans la suite de Wiki, ce listing permet juste de faire une chronologie des tâches effectuées.

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Analyse du projet 20
Rédaction du wiki 2 1 1 1 1
Documentation après prologue 2 2 4 2 2
Installation d'une VM avec Xen 2
Configuration de la VM 2 2
Ajout d'un nœud Tor 2
Serveur Web sur la VM 4
Mise en place du service caché 1
Mise en place du Directory server 3

Prologue

Nous avons passé de nombreuses heures à nous documenter sur le design de Tor.

Semaine 1

Après des explications sur l'architecture réseau de l'école et plus précisément celle du serveur Chassiron, nous avons débuté l'installation de notre première machine virtuelle. Notre curiosité nous a ensuite amené à nous documenter sur la virtualisation en général, sujet passionnant au passage. Quelques commandes après, notre machine était prête. S'en est suivi une étape de configuration permettant de connecter notre VM à ligne SDSL.

Semaine 2

  • Configuration de la carte réseau virtuelle de la VM pour se connecter à la ligne SDSL
  • Installation de quelques paquets : Lynx, TCPdump
  • Installation d'Apache2
  • Installation de Tor Browser sur tutur02
  • Comparaison Tor / Web classique avec Wireshark
  • Mise en place d'un service caché sur la VM

Semaine 3

  • Problème : le serveur web de la VM est accessible de l'extérieur du réseau Lille 1 mais pas de l'intérieur
  • Documentation en liens avec Tor et la sécurité, beaucoup de publications sur : https://www.freehaven.net/anonbib/
  • Mise en place d'un nœud

Semaine 4

  • Analyse des trames émises / reçues avec Wireshark
  • Comparaison Tor Browser / Firefox classique en passant par Tor : Fuites DNS si l'on oublie de rediriger les requêtes DNS par le proxy SOCKS
  • Lecture d'articles de recherche

Semaine 5

  • Lecture de documentation sur la création de circuit
  • Recyclage de 3 VMs sur Chassiron pour bâtir le réseau privée Tor. Deux seront des nœuds et la troisième sera à la fois un nœud, un serveur web et un directory server
  • Passage des IPs en static : 172.26.145.31-32-33
  • Installation de Tor sur les 3 VMs
  • Mise en en place du directory server, du relay et serveur web apache2 sur grolem
  • Configuration du relay sur grodoudou et goupix en spécifiant l'adresse du directory server (grolem)
  • Le réseau est en place, manque plus qu'à configurer le torrc du client, une tutur par exemple

Semaine 6

  • Le client est configuré mais doit néanmoins être considéré comme un nœud (à comprendre)

Travail réalisé

État de l'art

Présentation générale

Établissement du circuit tor

En cours de rédaction

Le routage en Oignon (dont Tor n'est qu'un exemple d'implémentation) est un réseau de surcouche distribué avec objectif d'anonymiser les applications basées sur TCP comme la navigation sur le web, les connexions SSH, et les discutions instantanées. Le client qui souhaite utiliser l'application à travers un routage en Oignon doit choisir un chemin à travers le réseau pour y construire un circuit, en pratique dans le cas de Tor, le client passera par trois nœuds ( ou routeurs oignon ), chaque nœud connaît son prédécesseur et son successeur, mais aucun des autres nœuds dans le circuit, si bien que le circuit réalisé au sein de Tor est semblable à une liste chaînée. Chaque nœud passant le message de son prédécesseur à son successeur.

Les messages circulent à travers le réseau au travers de cellules de tailles fixes dont nous discuterons plus tard. Le message est décrypté couche par couche à chaque passage d'un nœud, avant de passer au suivant, si bien que le message original est recouvert de couches de cryptage, d'où la présence du nom "oignon".

Tor n'est pas le premier logiciel à utiliser le routage en Oignon, en vérité Tor, sorti en 2002 est le routeur oignon de seconde génération, succédant au routeur oignon original qui ne fut pas bien pratique et qui n'a jamais été utilisé pratiquement, seulement en théorie et pour des tests. Tor a apporté beaucoup au routage en Oignon, y compris ses heures de gloires, comme l'indique sa popularité. Mais aussi beaucoup de fonctionnalités qui n'existaient pas avant, comme les serveurs d'autorité, le contrôle de congestion, le contrôle d'intégrité, des politiques pour les noeuds de sortie. Il apporte aussi un élément important jusque là absent du routage en Oignon : Les services cachés, dont nous parlerons plus tard.

De plus, d'autres réseaux de surcouches ayant pour but l'anonymat existent, comme nous l'avons évoqué dans l'introduction, ils ont des approches différentes, bien que l'idée de faire "rebondir" la connexion en l'encryptant avec différentes couches est tout de même assez commune. Dans le monde des réseaux d'anonymat, Tor fait partie de ceux à faible latence, ce qui lui permet de supporter la navigation sur internet, tandis que d'autres à haute latence ne permettent que des choses peu "temps réel", comme l'envoi de mail ou le partage de fichier. Il faut tout de même savoir que la faible latence a un coût, elle implique que le réseau soit plus sensible aux attaques passives et actives que nous verrons par la suite. Mais toujours est-il qu'un réseau à faible latence attire plus d'utilisateurs, et plus d'utilisateurs implique plus de noeuds, donc plus de sécurité. C'est d'ailleurs la raison pour laquelle Tor se veut très portable et utilisable, l’équipe du Tor Project tiens absolument à ce que Tor soit standard, et qu'il ne nécessite aucun patch de noyau. Tor fonctionne sur un internet tout à fait classique, plus précisément sur les streams TCP. Il faut noter qu'il existe des réseaux d'anonymat qui fonctionne sur les protocoles applicatifs, comme Crowds qui utilise HTTP,ou même directement sur IP, Tor Project se place donc au milieu, il a le défaut de ne supporter que TCP, mais il n'a pas besoin de patch noyau pour faire fonctionner des protocoles inconnus des developpeurs, et il permet une flexibilité de toutes les applications basées sur TCP ( ce qui n'est pas non plus négligeable ).


Tor fonctionne grâce à deux routines, l'une coté client appelée le proxy oignon qui se charge d’interroger les serveurs répertoires afin d'avoir le consensus périodiquement, à établir des circuits au travers du réseau, et à gérer les connexions requises par les applications de l'utilisateur, et l'autre coté noeud se connecte aux destinations requises, relaie les données, et réponds aux requête de Diffie-Hellman ( cf Annexe ).

A propos des serveurs d'autorités, appelés aussi serveurs répertoires, il s'agit de serveurs de confiances dont le but est de communiquer à qui souhaite l'entendre le consensus, qui est le fichier qui contient l'ensemble des informations sur le réseau Tor, à savoir la liste des noeuds, leur adresse ip, leur clef publique d'identifiant, ainsi que leur politique de sortie si il s'agit d'un noeud de sortie. Il est donc important de noter que les noeuds du réseau Tor sont divulgés publiquement ! Ce n'est pas le cas des bridges que nous verrons plus tard.

Cellules

L'unité de communication au sein du réseau Tor sont les cellules, il s'agit d'une trâme de 512 octets de long, avec un en-tête (on vient rajouter une encapsulation à TCP/IP, on encapsule l'application TCP, HTTP par exemple, dans une cellule Tor). En fonction du bit CMD, une cellule est soit une cellule de données, soit une cellule de contrôle. Dans le cas de cellule de contrôle, elle sera interprétée par le routeur Oignon qui la lira, en cas de cellule de données, elle sera juste transmise et servira de communication point à point au sein du réseau.

Les cellules de contrôle plusieurs rôles, elles peuvent être utilisées pour créer un nouveau circuit, faire du remplissage (padding) afin de garder la connexion active, ou bien décruire un circuits.

Les cellules de données quand à elles ont une en-tête supplémentaire, comportant un ID de stream servant à identifier le stream correspondant au message ( car plusieurs streams TCP peuvent avoir lieu sur le même circuit ), un checksum pour vérifier l'intégrité du message à chaque noeud, la longeur des données, ainsi qu'une commande de relai

Noeuds

Etablissement d'un circuit

Echange de clefs Diffie-Hellman

Web classique torifié

Les services cachés

Les failles connues

Expérimentations

Navigation sur le réseau Tor

Pour naviguer sur le réseau Tor, nous avons téléchargé la dernière version de Tor Browser disponible sur le site web de la fondation :

Il s'agit de la méthode la plus simple d'obtenir un ordinateur connecté à Tor de la manière la plus sécurisée possible. Tor Browser est un clone du projet Firefox de Mozilla, sous licence GPL. Il s'agit d'un simple navigateur modifié pour tout faire transiter par Tor.

Tor Browser - nœud de sortie

En pratique, Tor Browser va faire transiter les requêtes par un proxy SOCKS version 5 sur le localhost via le port 9050, sur lequel tourne le logiciel d'onion routing (Tor en lui même). En plus du navigateur, Tor Browser inclut divers logiciels purement sécuritaires, comme Privoxy, un proxy HTTP qui va filtrer toutes les fuites HTTP qui pourraient ne pas transiter par Tor, et par conséquent compromettre l'anonymat de l'utilisateur. Ce navigateur est également pourvu de deux extensions nativement : NoScript et HTTPS Everywhere. Par défaut, NoScript bloque l'exécution des scripts JavaScript, Java, Flash, Silverlight et les autres contenus exécutables mais l'utilisateur est libre de les réactiver sur les site qu'il estime de confiance. Nous verrons dans une autre partie de ce Wiki, pourquoi certains scripts peuvent se révéler dangereux pour l'anonymat. HTTPS Everywhere permet quant à lui de forcer l'usage du protocole HTTPS quand le site consulté utilise encore le HTTP par défaut.

A terminer :

Constatations : rapidité/moteurs de recherche/comparaison avec Firefox ...

Ajout d'un nœud

Nous avons ajouté un noeud Tor directement relié à la ligne SDSL de Polytech, pour ce faire, comme annoncé dans l'introduction, nous avons réalisé une machine virtuelle sur la machine Chassiron qui était libre et reliée à la ligne SDSL.

Création de la machine virtuelle

Avant de s’intéresser à notre nœud, il nous faut créer une machine virtuelle qui va le contenir, pour ce faire nous utilisons les logiciels xen ainsi que lvm. Xen est un hyperviseur de type un "bare-metal", il s'agit d'une couche entre le hardware et le kernel. Xen va être une sorte de passerelle, qui permet donc de faire tourner plusieurs versions de kernel en parallèle.

Pour la création de la machine virtuelle, nous utilisons Xen, avec la commande suivante:

xen-create-image --hostname=DurotDuq --dhcp --size=10Gb --swap=128Mb --lvm=gis4-pokedex

Cette commande crée deux volumes logiques : DurotDuq-disk et DurotDuq-swap sur le volume de groupe gis4-pokedex, de taille 10Gb et 128Mb respectivement, ces volumes logiques vont servir de disque pour la machine virtuelle. A savoir que aurions très bien pu les volumes virtuels en amont d'autant plus, un swap n'étant pas forcément nécessaire, nous aurions pu avoir strictement le même résultat en rentrant la commande :

lvcreate -L10 -nDurotDuq-disk gis4-pokedex

Puis en utilisant la partition ainsi réalisée dans la configuration de la machine virtuelle. La machine virtuelle étant créée, on peut la configurer via le fichier "/etc/xen/DurotDuq.cfg", où on peut modifier les interfaces réseaux de la machine virtuelle, leurs adresses mac, etc ... En particulier, nous connectons la carte réseau virtuelle sur le bridgeAlternate, qui contient la Vlan47 sur laquelle est la ligne SDSDL

Il ne nous reste plus qu'à modifier le fichier /etc/network/interfaces de la sorte :

auto eth0
iface eth0 inet static
 address 5.23.44.84
 netmask 255.255.255.248
 gateway 5.23.44.81

Notre VM est maintenant connecté à Internet sans passé par le réseau interne de la FAC.

Ajout du nœud effectif

Pour que notre machine virtuelle fonctionne comme un nœud, il faut premièrement installer Tor sur la machine. Pour se faire, nous avons récupéré le package Tor via les dépôts officiels Debian. Pour être reconnu comme un nœud Tor, il faut qu'elle communique diverses informations aux serveurs d’autorité de Tor, comme son nom, son adresse IP, sa politique (ports TCP autorisés) ...

Voici un exemple de configuration, celui que nous avons utilisé, du fichier /etc/torrc :

SocksPort 0 #1
DataDirectory /var/lib/tor
Nickname nom_au_choix #2
Address ip_publique #3
ContactInfo ail@domaine.tld #4
ORPort 9001 #5
RelayBandwidthRate 20 KBytes #6
RelayBandwidthBurst 35 KBytes #7
ExitPolicy reject *:* #8
Exemple de nœuds sur Tor Metrics

Dans le cas d'un nœud, le SocksPort (1) peut être mis à 0 car aucun autre processus de la machine ne va communiquer avec Tor. Le Nickname est le nom qui sera attribué à notre nœud, celui sera visible sur les annuaires de recherche de relais comme sur le site officiel Tor Metrics. En (3), nous retrouvons l'IP publique de la machine et en (4) éventuellement une adresse mail afin que le Project Tor puisse nous contacter. Ensuite, ORPort (5) représente le port sur lequel on va communiquer avec notre nœud. L’échange de clefs Diffie-Hellman et le traffic Tor passeront par ce nœud et auront pour destination ce port. Pour limiter ce traffic justement, il nous est possible de choisir la bande passante moyenne et maximale que l'on accorde à notre nœud. En revanche, il faut savoir que la bande passante minimale est de 75 ko/s. Nous indiquons finalement (8) que nous ne souhaitons pas être un nœud de sortie car ce sont les plus vulnérables dans la mesure où ce sont eux qui se connectent "effectivement" aux sites.

Après cette opération effectuée, il faut compter quelques heures pour que le consensus soit mis à jour au niveau des serveurs d'autorité. Mais en pratique, notre nœud a peu de chance d’être choisi lors du routage, ses ressources étant très limitées.

Création d'un service caché

En cours de rédaction ...

Ajouter des images

Pour cette partie, nous travaillons toujours sur notre VM DurotDuq avec le paquet Tor installé. La première étape consiste à y installer un serveur web, apache2 dans notre cas, sans configuration particulière. Nous avons ensuite déposé un simple fichier html de test dans le dossier défaut utilisé par apache, à savoir /var/www/html. Vient ensuite la configuration du torrc, pour lequel il faut dé-commenter les lignes suivantes :

DataDirectory /var/lib/tor
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80

Pour rafraîchir la configuration, on reload le service : service tor reload

Ceci étant fait, Tor va générer dans le dossier /var/lib/tor/hidden_service/ deux fichiers, hostname et private_key. Ce qui nous intéresse dans cette partie, c'est de récupérer le nom de domaine en .onion de notre service caché situé dans le fichier hostname.

Il ne reste plus qu'à configurer apache en faisant en sorte qu'il n'écoute que les communications provenant du processus Tor, empêchant ainsi l'accès à quiconque souhaitant accéder au site par son IP.

Dans le fichier /etc/apache2/ports.conf, nous avons changé la ligne Listen 80 par Listen 127.0.0.1:80. On fait de même pour la configuration du site hébergé par défaut /etc/apache2/sites-enabled/000-default.conf en remplaçant <VirtualHost *:80> par <VirtualHost 127.0.0.1:80>. Finalement, on relie notre nom de domaine : ServerName NomDeDomaine.onion.

Après un restart du service apache2, le service caché est opérationnel.

Bibliographie

Et bien d'autres à rajouter.

Documents Rendus