Menu

Connexion utilisateur

Le réseau

Site officiel : Freenet project

Anonyme ? Comment ?

En se couvrant les uns les autres.

Explications très simplifiées et probablement en partie fausse:
Imaginez un réseau de nodes (cf le schéma sur le coté) : On considère que chaque node ne connaît que ses voisins. Maintenant un premier node envoie une requête à certains de ses nodes voisins, et ces mêmes nodes renvoient à leur tour la requête à certains de leurs voisins. Du coup, chaque node sait quel node lui a fait passer la requête. Vous l'avez sûrement compris, bien qu'il sera possible à une réponse de suivre le chemin inverse d'une requête, aucun des nodes ne pourra savoir quel est le node à l'origine de la requête. De même, il est impossible de déterminer quel node répond à la requête.

Mettons tout de suite les points sur les 'i' : Il n'est nullement question ici de se connecter à des sites web du "vrai Internet" anonymement ou même de publier des sites web anonymement sur le "vrai Internet". Pour ça, aller voir cette abomination de la nature qu'est Tor et son ami Privoxy.

*
Zoom

Des anonymes

Des nodes ?

Le terme français correspondant est 'noeud'. Mais personnellement je préfère éviter de l'utiliser ... il a une connotation ... douteuse ... :)
Dans le cas de Freenet, un node est en fait un programme Java (oui je sais, Java, bouh, caca).

Dans un monde parfait, les gens devraient se connecter uniquement à des gens en qui ils ont confiance (je crois qu'on appelle ça des "amis" ? :). Dans les faits, Freenet est trop petit, donc ça craint.

Il y a deux manières de se connecter à Freenet : Le darknet et l'opennet. Le darknet implique qu'on ne se connecte qu'à des gens en qui ont a confiance. L'opennet lui va connecter votre node automatiquement à des nodes inconnus. Bien entendu, le darknet est la méthode recommandée, mais l'opennet reste la plus facile à mettre en oeuvre. (Petite précision : Le darknet et l'opennet concerne bien le même réseau ; ce sont juste des méthodes de connexions différentes)

Pour se connecter à quelqu'un manuellement, on procède à ce qu'on appelle un "échange de refs". Une ref est un bout de texte illisible d'environ dix lignes fournissant à la node de l'autre toutes les informations nécessaires pour joindre votre node. Comme vous avez dû le deviner, chaque node doit avoir au moins 3 peers (voisins) connectés, sinon niveau anonymat, ca devient craignos. Pour Freenet on recommande plutôt au moins entre 5 et 10 peers, pour la simple et bonne raisons qu'ils ne sont jamais tous connectés en même temps, et qu'il y a certaines personnes qui viennent sur Freenet, trouvent ça nul, et laissent tomber sans prévenir leur peers.

Si vous optez pour l'opennet, désormais tout se fait automagiquement. L'opennet part d'une liste prédéfinie de nodes fournie par emu (le serveur principal du projet freenet), va interroger ces nodes pour connaitre ses voisins, etc, jusqu'à trouver des nodes disponibles auxquelles se connecter (enfin ça c'est la version simplifiée).

La page dans l'interface de configuration du node concernant le darknet est appellée "Amis", tandis que celle concernant l'opennet s'appelle "Strangers". Par défaut, l'opennet (aussi parfois appellé "promiscuous mode") est désactivé. La page "Étrangers" n'est pas visible quand l'opennet est désactivé sur le noeud.

Stockage distribué ?

Sur Freenet, seul deux opérations sont possibles:

Lorsque l'on insère un fichier sur Freenet, il est crypté et découpé en blocs (généralement de 32Ko (+ compression)), puis ces blocs sont automatiquement répartis entre les nodes. Cela implique que chaque node mette à disposition de l'ensemble du réseau une partie de son espace disque (le "datastore"). Une fois l'insertion terminée, le node vous confie une clef : Cette clef contient généralement une première partie permettant de retrouver le fichier, et une deuxième partie permettant de le décrypter.

Vous l'avez devinez, pour télécharger un fichier, il vous faudra donc sa clef.

Mais ça sert à rien en fait ?

Taratata, j'ai pas fini. Il y a en fait différents types de clefs, dont certaines "prévisibles".

Ces types de clefs sont:

  • Les CHK@ : Les plus courantes : Elles sont générés à partir du contenu du fichier (SHA256) : Un même fichier produira donc toujours la même clef CHK@.
    Exemple:
    CHK@tWiTXVb7dN...Tx~BiMo,sAUGYrUFvO...WM2Cq~xWKalnWdGW8fNIZFQ,AAIC--8/Thaw-0.6.3.jar
    
  • Les KSK@ : Les plus simples : Elles font correspondre un mot-clef à un fichier.
    Exemple:
    KSK@gpl.txt
    

    (Ces clefs n'offrent aucune garantie, et peuvent facilement être détournée)

  • Les SSK@ : Clefs signés:
    SSK@G-ofLp2KlhHB...-QUxJK8c2xiF~-jwE,-55vLnq....GQdk-Y3hS...Nc,AQABAAE/Thaw-7/Thaw.frdx
    

    La clef que vous communiquez aux autres utilisateurs est appellée "clef publique". Dans le cas des SSK@, elles ont en fait toute une "clef privée" associée (commencant aussi par 'SSK@'). Cette clef privée permet d'ajouter du contenu correspondant à la clef publique.
    Si par exemple je voulais mettre à jour les données vers la lesquelles pointent la clef ci-dessus, je devrais utiliser la clef privée pour insérer la clef suivante:

    SSK@G-ofLp2KlhHB....~GD....iF~-jwE,-55vLn....YGQdk-Y3hSLx...,AQABAAE/Thaw-8/Thaw.frdx
    

    (vous noterez un passage de la "révision" 7 à 8)

  • Les USK@ : Clefs mettables-à-jour :
    En fait, elle sont globalement équivalente aux clefs SSK@.
    Par exemple:
    USK@G-ofLp2KlhH.....xJK8c2xiF~-jwE,-55vLnqo3U1....yKeUyHNc,AQABAAE/Thaw/7/Thaw.frdx
    

    et

    SSK@G-ofLp2K...J-QUxJK8c2xiF~-jwE,-55vLnqo3...-Y3hSLxyKeUyHNc,AQABAAE/Thaw-7/Thaw.frdx
    

    sont grosso-modo équivalentes.
    Sauf que, lorsque vous utilisez une USK@ à la place d'une SSK@, le node va essayer d'obtenir automagiquement la dernière révision de la clef plutôt que simplement celle demandée.

Sur Freenet vous pouvez aussi rencontrer des URI de la forme :

freenet:clef

Par exemple:

freenet:CHK@tWiTXVb7dNuG...isJYLGgTx~BiMo,sAUGYrUFv...lnWdGW8fNIZFQ,AAIC--8/Thaw-0.6.3.jar

Oui, et ?

Ben à partir de là, on peut créer toute sorte de truc inutiles, mais anonymisés ! :)
Par exemple :

  • Des sites en HTML tout statique (et pas de Javascript pour des questions de sécurité)
    • Consultables via Fproxy (l'interface web intégrée à la node)
  • Des systèmes de messagerie
    • Freemail
  • Des forums de discussions
  • Des systèmes d'échange de fichiers

Et combien ca coûte ?

Pas cher mon Freenet, pas cher !
Qui veux d'mon Freenet ?
- Jflesch

La liste des choses nécessaire pour se connecter à Freenet:

  1. Une machine virtuelle Java
  2. Une node
    1. 50 à 150 Mo de mémoire vive
    2. Autant de Go de disque que vous êtes prêt à en donner (min. 1.5 Go)
  3. Du temps

Ce à quoi il faut vous attendre :

  1. Débits assez faibles
  2. Latences élevées
  3. Anonymat quasiment garantie (sauf boulette de votre part)
  4. Vous retrouver à lire des choses que vous auriez préféré ignorer

Bref, si vous voulez des détails, je vous suggère d'aller lire la doc sur le site officiel et sur le wiki du projet Freenet.


* : Image issue de V pour vendetta