Jan 272013
 

Au cours de précédents articles, nous avons abordé certaines faiblesses (réelles ou présumées) du réseau Tor. J’ai fait de mon mieux pour les expliquer le plus clairement possible, et en refléter la gravité le plus fidèlement possible.

Cependant, cela fait plusieurs mois que je cherche un moyen d’aborder celle qui me paraît la plus nocive, la plus toxique au bon fonctionnement du réseau. Du moins, sur le long terme.

N’arrêtez pas la lecture trop vite en en lisant le nom. Cela peut sembler bateau, mais derrière ce titre générique, se cache une dynamique complexe, fragile, et beaucoup trop peu évoquée du fonctionnement du réseau Tor.

Voyons donc ensemble, si vous vous en sentez le courage, quelle est le principal réel problème posé à la viabilité du réseau Tor.

La diversité des noeuds du réseau

Avant d’attaquer l’effet pervers et furtif, revenons d’abord sur l’évidence.

Votre client Tor établit un « circuit » de 3 relais choisis le plus aléatoirement possible parmi la liste des noeuds présents sur le réseau. Comme nous l’avons vu, pour espérer compromettre une connexion, il faut que la même personne/entité parvienne à détenir le premier et le dernier noeud du circuit.

Dit comme ça, et étant donné que le réseau compte 3000 noeuds actifs, la probabilité de voir son circuit compromis semble raisonnablement basse.

  • La mécanique derrière le concept d’Entry Guard est là pour réduire d’avantage la probabilité d’assembler un premier noeud avec un éventuel dernier noeud détenu par la même personne.
  • À cela s’ajoute le fait qu’un détenteur de plusieurs noeuds peut les désigner comme « appartenant à une même famille », ce qui aura pour effet d’interdire à votre client d’utiliser plus d’un noeud de la même famille (même administrateur) dans un même circuit. Un attaquant malicieux ne configurera évidemment pas ces « familles », mais si un administrateur honnête voit ses noeuds mis sur écoute passive, ce petit réglage peut mitiger l’attaque.
  • Et pour couronner le tout, évidemment, l’équipe de Tor observe d’un oeil attentif la mise en ligne et le comportement des noeuds de sortie, autant que possible, afin que la mise en place du jour au lendemain d’un honeypot ne passe pas inaperçue, et soit sanctionnée de blacklisting.

Lire tout ça vous a probablement enveloppé d’une confortable impression de sécurité.
Après tout, tout cela semble judicieux, justifié et sacrément efficace, quand utilisé en conjonction, pas vrai ?

…pas vrai ?

Une erreur d’appréciation

exit-probability-cdf-a
Si votre sentiment de sécurité ne viens pas de s’ébranler, c’est que la signification de ce schéma ne vous est pas parfaitement claire.

Malheureusement pour vous, je ne laisserai pas cette confusion demeurer un refuge plus longtemps.

Ca veut dire quoi ?

Ce que ce schéma signifie que:

  • A chaque fois que vous établissez un circuit, vous avez environ 45% de chances de choisir au moins un relais parmis les 10 mêmes.
  • Plus de 80% de vos circuits passeront toujours par les 40 mêmes relais.
  • Comme si ce n’était pas encore assez inquiétant, non seulement vous réutiliserez souvent les mêmes relais, mais en plus, tous les autres utilisateurs de Tor sont soumis à cette même probabilité, de passer par le même relais

Donc en clair, une proportion écrasante des utilisateurs de Tor passent par les 40 mêmes relais parmis les 3000 listés.

Qu’est ce que ça implique ?

Principalement, deux choses.

La première, c’est qu’un nombre très réduit de noeuds porte sur ses épaules une portion imposante du traffic Tor. Pas seulement en nombre de circuits, mais également en volume. Si ces relais venaient à disparaître du réseau pour une raison ou pour une autre, les 2950 autres relais unis ne suffiraient pas à
supporter la charge du réseau. A court terme, le réseau s’écroulerait sur lui-même et cesserait de fonctionner. A moyen terme, on suppose que la demande s’ajusterait. Le réseau fonctionnerait, mais le débit atteint par les clients serait, en comparaison, ridicule.

Beaucoup se plaignent de la lenteur actuelle de Tor, mais si cette bande passante moyenne par client était réduite de 80%, une simple navigation deviendrait tout simplement insupportable.
Et qui dit navigation insupportable, dit obligation de passage à un navigateur « traditionnel », et donc perte d’anonymat pour beaucoup de gens en ayant besoin pour leur sécurité et celle de leur famille.

Pire encore, ces relais pourraient être compromis, plutôt que déconnectés.
Comme vous vous en rappellez probablement, le principe d’un Entry Guard est qu’on tente d’utiliser le même premier noeud le plus souvent possible. Immaginez un réseau de 30 noeuds où il n’y en a qu’un d’infecté. Si vous ouvrez 30 connexions en changeant à chaque fois de premier noeud, vous passerez obligatoirement au moins une fois par ce noeud compromis. Mais si vous vous limitez à utiliser toujours le même noeud, vous en choisissez un seul parmis les 30, avec 29 chances sur 30 d’en choisir un bon, et même après 1000 connexions, vous avez échappé au noeud malicieux. Vous l’aurez cependant deviné, si vous avez la malchance de choisir le mauvais noeud dès le départ, chacucne de vos connexion passera par celui-ci…

En temps normal, cette probabilité est très faible, tant qu’il y a une majorité d’Entry Guards « sains » sur le réseau, ou qu’… une minorité restreinte d’Entry Guards compromis ne brassent pas 80% du trafic ?

Si cela venait à être le cas, un attaquant détenant un de ces noeuds, et mettant un exit node en ligne, augmenterais grandement la probabilité que plusieurs personnes choisissent par malchance un circuit utilisant ces noeuds compromis comme premier et dernier relais du circuit. Plus l’Exit Node est petit, moins cette probabilité est élevée, mais si l’attaquant détiens deux noeuds parmis ces 40 plus utilisés, quelle est la probabilité de choisir à la fois le noeud d’entrée et celui de sortie parmi ces 40 noeuds « centraux » ?

En regardant le graphique, la seule chose qui me vienne à l’esprit est « Trop grande à mon gout. »

Pourquoi c’est comme ça ?

Pour comprendre comment on en est arrivé là, il faut comprendre comment un circuit est choisit à travers le réseau Tor.

La sélection des noeuds par votre client Tor n’est pas complètement aléatoire.
Elle tiens compte de plusieurs paramètres, parmi lesquels:

  • Il faut que le noeud de sortie accepte de faire passer le protocole qu’on désire utiliser
  • Ne jamais utiliser deux noeuds de la même « famille » (même opérateur) au sein d’un même circuit
  • Réutiliser un même Entry Guard le plus souvent possible
  • Favoriser les noeuds ayant le plus de capacité

C’est ce dernier point qui nous pose tant de problèmes.

Pour être utilisé, Tor a besoin d’être utilisable.

Cela implique un débit minimum, en dessous duquel internet n’est pas praticable. Or, quand on passe par trois relais, on augmente déjà inévitablement la latence des connexions, ce qui donne déjà une impression de lenteur. Mais surtout, le débit maximal qu’on peut espérer sur le circuit d’une connexion est, au maximum, celui du relais le plus lent. Il s’agit là d’une loi immuable en réseau.

Si mon premier relais peut m’allouer 300ko/s, que le second peut m’en offrir 35ko/s et que le dernier m’en offre 280ko/s, je ne pourrai jamais transférer plus de 35ko/s de données sur cette connexion.

Or, tout circuit nécessite un exit node, et ceux-ci, pour diverses raisons, son non seulement peu nombreux sur le réseau, mais ont souvent un débit réduit. Beaucoup d’entre eux peinent à transférer plus de 300ko/s. En tout. Ce sont donc 300ko/s à partager entre plusieurs dizaines de connexions.

Le résultat est un goulot d’étranglement de la bande passante.
Choisir un seul noeud « lent » dans votre circuit va brider la bande passante de tout votre circuit.
Et des noeuds « lents », dans le réseau, il y en a beaucoup. Surtout parmi les exit nodes.

Pour pallier à cela, il a donc fallu établir un compromis. c’est pourquoi, à la sélection des noeuds d’un circuit, votre client donne un poids différent à la probabilité de choix des noeuds du réseau, en fonction de la bande passante qu’ils allouent.

Cependant, cette sélection « intelligente » se retourne contre la sécurité du client lorsqu’un petit nombre de TRES TRES TRES GROS relais (et Exit Nodes, qui plus est!) sont généreusement mis à disposition du réseau Tor. Ceux-ci rendent l’utilisation de Tor beaucoup plus tolérable, mais déséquilibrent la charge du réseau.

C’est ainsi qu’un nombre restreint de noeuds gargantuesques en arrivent à brasser une énorme portion du traffic du réseau. Tout simplement parce qu’ils le peuvent. Ils ont à eux seul plus de bande passante qu’un grand nombre d’autres relais réunis.

Comment résoudre ce problème ?

Si vous remontez voir le graphique de probabilité de choix des plus gros noeuds, vous verrez que la courbe a fluctué en fonction du temps.

Les développeurs de Tor font leur possible pour mitiger ce problème, mais étant donnée la disparité entre la vitesse moyenne des noeuds (de sortie, principalement) « normaux », et celle des « gros » noeuds, l’équilibre est très fragile.
Si on délaisse un peu trop les énormes noeuds, les utilisateurs vont trop souvent passer par des noeuds « goulot d’étranglement » et Tor deviendra invivable pour beaucoup d’utilisateurs. Mais si ces noeuds sont trop utilisés, un même utilisateur passera toujours par les mêmes noeuds, ce qui pose d’évidents problèmes de sécurité.

Jouer avec les formules mathématiques et les poids attribués aux noeuds en fonction de leur bande passante a ses limites, c’est une approche condamnée à l’échec, étant donné l’état actuel du réseau.

La solution, c’est de changer l’état du réseau.

We’ll need bigger boats

Le premier réflexe, quand on parle de problème de diversité dans le réseau Tor, c’est l’approche « extrêmement décentralisée ».
C’est à dire, mettre en ligne le plus de petit noeuds possible, pour contre-balancer la centralisation de gros noeuds.

Dans notre cas, c’est une erreur fatale.

Le réseau Tor ne manque pas de noeuds. Il en a 3000.
3000 noeuds est un nombre qu’on aime voir grandir au fil des mois, mais pour le nombre d’utilisateurs qu’il porte, ça devrait être assez de diversité.

Le réseau Tor n’a pas besoin de 6000 petits noeuds pour rétablir un équilibre.
Il a besoin de 3000 PLUS GROS noeuds.

En résumé, il ne faut pas PLUS de noeuds, il faut faire GRANDIR ceux qui existent déjà.

Pour cela, deux stratégies me tiennent à coeur :

La collaboration

La solution la plus facile à organiser, c’est de faire grossir les noeuds déjà en place, déjà configurés.

Si vous voulez aider le réseau Tor, au lieu de rajouter un petit noeud à 100ko/s qui sera complètement ignoré, pourquoi ne pas chercher, dans vos connaissances de confiance, un ami qui héberge déjà un noeud Tor? Vous pourriez vous arranger pour financer ensemble une facture deux fois plus grande, pour une bande passante deux fois plus importante, et que ce noeud ait deux fois plus de poids !

De cette façon, vous doublez le poids d’un noeud en lequel vous avez tout autant confiance.

Vous pouvez même vous mettre à plusieurs (personnes de confiance) pour financer le même gros noeud, pour un meilleur résultat encore !

La mutualisation

Si la collaboration peut permettre de doubler, tripler, quadruler la « puissance » d’un noeud, ce système se complique lorsqu’on veut aller au delà.

Il est difficile de trouver 10, 15, 20 personnes de confiance. Et oui, vous devez concurrencer une 50aine de noeuds qui sont 100 à 1000 fois plus rapide qu’un noeud individuel moyen, donc rechercher un x20 est loin d’être excessif.

Pour un tel dispositif, il faut s’organiser en grand nombre, se structurer, avoir une comptabilité transparente, bref, s’associer.

C’est exactement ce que l’initiative « nos-oignons » cherche à accomplir.

Nos-Oignons est un groupe de personnes ayant constaté, identifié cette problématique de diversité, et ayant décidé d’agir pour y remédier le plus efficacement possible.

Pour ce faire, ils veulent créer une organisation qui se chargera d’héberger des noeuds

  • les plus conséquents possible
  • sur le territoire français
  • administré par des gens de confiance
  • financé par des membres adhérents, et des donnateurs. VOUS.

Tout cela, afin d’apporter le plus de diversité au réseau Tor possible. Pas seulement une diversité de petits noeuds ignorés, mais une diversité de gros noeuds utiles. Faisant la différence.

Let the Onions GROW

nos-oignons n’est ni le premier, ni le seul groupe s’étant fixé ces objectifs. Le plus connu étant torservers.net, une organisation allemande hébergeant des noeuds à travers le monde.

Ces derniers mois, suite à ces constats, la communauté Tor a cherché des moyens de monter plus d’initiatives pour augmenter la taille des noeuds présents sur le réseau, et rétablir une équité dans sa diversité. Des projets sont en train de se monter aux Pays-Bas, et nos-oignons cherche donc à le faire en France.

Je suis convaincu que ces initiatives sont non seulement d’excellentes idées, mais également, à long terme, une question de survie pour le réseau Tor.
A terme, il faudrait qu’un grand nombre de pays aient au moins un organisme chargé de mutualiser des énormes noeuds Tor sur leur propre territoire, pour garantir un réseau sain, efficace, digne de confiance.

La situation est grave, mais pas désespérée.

Si vous cherchez donc comment contribuer au réseau Tor, au lieu de planter des champs entiers d’oignons atrophiés, pensez à prendre soin de ceux qui sont déjà plantés, et ne demandent que vous pour parvenir à s’épanouir pleinement !