Transcript Freenet
Sujet d’étude d’approfondissement en réseau:
Freenet
Responsable du module: Florence Perronnin
Auteurs: Audrey COLBRANT
Samy SIDOTMANE
Plan
Introduction
I. Description générale
II. Les réseaux P2P décentralisé faiblement structuré
III. Description technique de Freenet
IV. Objectifs de Freenet
V. Démonstration
Conclusion
Bibliographie
Introduction
•
Naissance du projet
– Année de création : 1999
– Concepteur : Ian Clarke
– Lieu : Edimbourg
•
Fonctionnalités possibles avec Freenet 0.7
– Surfer sur des sites Freenet
– Créer et insérer des free Site
– Discussions dans des forums
– Echange de fichiers
– Réception et envoi d’email
I. Description générale
•
Fonctionnement global
–
Réseau bâtit sur internet
–
Diamétralement opposé aux principes du web
–
Pas de client ni de serveur / tous clients et tous serveur
–
P2P =/= Freenet =/= Web
• Espace de total liberté
–
Anonymat
–
Résistance à la censure
–
Résistance aux attaques
–
C’est fun
•
Comment se connecter à Freenet ?
–
Installer un nœud sur votre PC
–
Nœud = Serveur (accès local: 127.0.0.1:8888)
–
Patienter 24 à 48 heures pour que la page d’accueil soit
utilisable.
II. Les réseaux P2P décentralisés
faiblement structurés
• Le principe :
– P2P
• Chaque nœud est serveur et client en même temps
• Les ressources sont décentralisées
– Décentralisé
• Recherche de ressources décentralisée
• Montée en charge
– Structuré
• Anneau logique où l’on ordonne les nœuds et les clés de
décryptage des données.
• Une Finger Table sur chaque nœud pour repérer les clés lors
des recherches
Exemple d’anneau logique
avec DHT à 6bits
Les nœuds
Les clés privées associées aux ressources
Finger Table pour le nœud 8
Clé
Nœud
8+1=9
N14
8+2=10
N14
8+4=12
N14
8+8=16
N21
8+16=24 N32
8+32=40 N42
Mais alors qu’est ce que le P2P
décentralisé faiblement structuré ?
• Nœuds ordonnés sur l’anneau
• Ressources dupliquées
• Ressources non ordonnées sur l’anneau
• Finger Table remplacée par un cache
III. Description technique de Freenet
1. S’insérer dans le réseau
2. Stockage de l’information
3. Les principaux protocoles de routage
4. Flux réseau et ports utilisés
III. 1. Fonctionnement du réseau Freenet
(S’insérer dans le réseau)
1.
J’ai téléchargé le logiciel Freenet et démarré le service(nœud actif)
Votre Ordinateur
Internet
Noeud
127.0.0.1:8888
Browser
port : 2383
nodeId : 20107cdb705b37dbbcbbd6ec836919bebea24b3bf962a2943213c0032ef3c6af
III. 1. Fonctionnement du réseau freenet
(S’insérer dans le réseau)
1.
J’ai téléchargé le logiciel Freenet et démarré le service(nœud actif)
2.
Pour accéder au réseau il faut connaitre quelqu’un
A.
Vous connaissez l’ NodeInfo et ip d’un ami (on suppose qu’il est dans le réseau)
Le Nœud de
votre ami
toto
Toto envoi:
idVoisin le plus proche du votre
Votre Noeud
III. 1. Fonctionnement du réseau freenet
(S’insérer dans le réseau)
1.
J’ai téléchargé le logiciel Freenet et démarré le service(nœud actif)
2.
Pour accéder au réseau il faut connaitre quelqu’un
A.
B.
Vous connaissez l’IP d’un ami (on suppose qu’il est dans le réseau)
Vous ne connaissez personne hélas (reste le DNS – pas vraiment à jour)
DNS
Le Nœud
retourné par
le DNS
Nœud inconnu envoi:
idVoisin le plus proche du votre
Votre Noeud
III. 1. Fonctionnement du réseau freenet
(S’insérer dans le réseau)
1. J’ai téléchargé le logiciel Freenet et démarré le
service(nœud actif)
2. Pour accéder au réseau il faut connaitre quelqu’un
A.
B.
Vous connaissez l’IP d’un ami (on suppose qu’il est dans le réseau)
Vous ne connaissez personne hélas (reste le DNS – pas vraiment à jour)
Dans les deux cas vous avez un NodeId auquel vous connecter
3. Se connecter au voisin que l’on vous a retourné, à son tour
il vous redirigera jusqu’à ce que vous ayez au moins 3
connections et au plus 20 connections
III. 1. Fonctionnement du réseau freenet
(S’insérer dans le réseau)
Bilan jusqu’à présent
Votre nœud
Est placé dans sa zone
N2^160-1 1
3
1
N2^160-XXX
2
N2^159
III. 1. Fonctionnement du réseau freenet
(S’insérer dans le réseau)
1. J’ai téléchargé le logiciel Freenet et démarré le
service(nœud actif)
2. Pour accéder au réseau il faut connaitre quelqu’un
A.
B.
Vous connaissez l’IP d’un ami (on suppose qu’il est dans le réseau)
Vous ne connaissez personne hélas (reste le DNS – pas vraiment à jour)
3. Se connecter au voisin que l’on vous a retourné, à son tour
il vous redirigera jusqu’à ce que vous ayez au moins 3
connections et au plus 20 connections
4. À ce moment notre table de routage possède quelques
voisins qui eux aussi nous ont dans leur Table
III. 2. Le stockage de l'information
- tout est fichier
- un fichier = une clé unique
- fichiers coupés en blocs de 32 Ko
a - Les clés
b - Le stockage
III. 2.a - Les clés
Accès au fichier par :
http://localhost:8888/[Freenet Key]
CHK - Content Hash Keys
SSK - Signed Subspace Keys
USK - Updateable Subspace Keys
CHK :
Permet de désigner un fichier particulier sur le réseau (mp3, pdf...).
Composé de :
1. le hash du fichier donnant un identifiant unique
2. la clé de décryptage qui permet de lire le fichier
3. la méthode de cryptage
impossible de décrypter le fichier sans la CHK
A quoi ça ressemble ?
CHK@file hash,decryption key,crypto settings
Par exemple :
CHK@SVbD9~HM5nzf3AX4yFCBc-A4dhNUF5DPJZLL5NX5Brs,
bA7qLNJR7IXRKn6uS5PAySjIM6azPFvK~18kSi6bbNQ,AAEA--8
SSK :
Permet de désigner un fichier qui va changer au cours du temps
(Freesite...).
Composé de :
1. le hash du fichier donnant un identifiant unique
2. la clé de décryptage qui permet de lire le fichier
3. méta données contenant notamment la méthode de cryptage
4. le chemin choisi par le créateur de la données
5. le numéro de version de la donnée
A quoi ça ressemble ?
SSK@file hash,decryption key,crypto settings/path-version
USK :
Permet de charger la dernière version d'un site, mécanisme de
recherche de last update sur un SSK.
Composé de :
1. le hash du fichier donnant un identifiant unique
2. la clé de décryptage qui permet de lire le fichier
3. méta données contenant notamment la méthode de cryptage
4. le chemin choisi par le créateur de la données
5. le numéro de version de la donnée
On construit une clé USK à partir d'une SSK ainsi :
SSK@file hash,decryption key,crypto settings/path-version
=>
USK@file hash,decryption key,crypto settings/path/version
III. 2. b - Le stockage
- Dossier download
- Datastore divisé en deux parties égales :
* Le cache : stockage des clés qui passent par le noeud
map de : noeud source, clé, fréquence de passage
-> explique le délai pour que le nœud soit opérationnel
* Le store : stockage des données cryptées qui ont été rapatriées
sur le noeud
Mécanisme de flush de la mémoire utilisée.
III. 3. Fonctionnement du réseau freenet
(Télécharger une ressource)
Je suis un nœud déjà intégré qui a des voisins
•
J’ai une clé qui correspond à une ressource et je désire la
récupérer.
Key CHK/SSk et HTL
Ressource correspondante
III. 3. Fonctionnement du réseau freenet
(Echange de position -- SWAP)
1. Demandes successives d’un nœud à son voisin se
rapportant à des clés voisines
Echange de position sur l’Overlay
2. Echange de cache (clés associées aux nœuds)
Principe complémentaire avec le système de duplication de
données
III. 3. Fonctionnement du réseau freenet
(Insertion de ressources)
•
•
•
•
•
•
On insère notre ressource dans notre nœud
Le Nœud se charge de transformer la ressource en Freenet
Ressource
On la stock dans notre store
On choisit 1 voisin dans la liste (le plus proche de la
ressource)et on tire aléatoirement un HTL
On leur envoi la ressource
Le voisin reçoit une ressource, la stock dans son store, et la
diffuse en décrémentant le HTL
III. 4. Flux Réseau et ports utilisés
III. 4. Flux Réseau et ports utilisés
• FNP : port de communication choisit aléatoirement pour éviter les
blocages de port
• FCPv2:
– Protocole à base de message
– le transport s’effectue via TCP
– Types de messages : hello Client, listPeer, listPeers etc …
IV. Comment Freenet atteint ses objectifs ?
1 – Types de connexions
2 - Anonymat
3 - Résistance à la censure
4 - Résistance aux attaques
IV. 1 – Types de connexions
- OpenNet
- Darknet
- Faux darknet
- mixte
IV. 2 - Anonymat
- On voit les requêtes comme si on était une passerelle (pas de
connaissance de la source ou de la destination)
- Données en version chiffrées sur l'ordinateur
- Déni plausible par impossibilité de lecture du contenu
IV. 3 - Résistance à la censure
- Censurer une info = la trouver et éteindre tous les noeuds qui l'ont
- Trouver une info = faire des requêtes la concernant
- Faire des requêtes sur une info = la multiplier
=> impossible de censurer quoi que ce soit
=> analyse du trafic pour identifier les nœuds seulement par des
gouvernements ou de puissantes organisations
IV. 4 - Résistance aux attaques
a. Harvesting
b. Location swapping
c. Attaques légales
d. Identification d'un
utilisateur
+ Attaque par corrélation
+ Attaque adaptative
a. Harvesting
- Déf : Récupérer l'ensemble des adresses IP des noeuds pour les
bloquer. Tous les logiciels de P2P sont sensibles à cette attaque.
- ici : Freenet étant décentralisé, il faut faire tourner une version
modifiée du noeud
- Faisable uniquement par des gouvernements ou des organisations
puissantes
- Solution : Darknet
b. Location swapping
- Principe : Faire disparaître des données du réseau en détruisant des
noeuds
- ici : l'algorithme d'échange des positions est visé en ciblant une
zone particulière et leurs clés associées
- Solutions :
+ mécanisme de caching (2007)
+ changement de position sur le cercle aléatoire toutes les 2000
permutations = uniformisation des nœuds sur le cercle
c. Attaques légales
- Blocage de ports : port aléatoire pour les connexions, impossible de
bloquer tous les ports
- Blocage de protocole : le trafic est crypté donc impossible de détecter
qu'il vient de Freenet
- Interdiction du cryptage : impossible depuis l'apparition du commerce
en ligne
- Pénaliser l'utilisation de Freenet : Darknet subsistera. Perquisition de
pc possible mais il faut un motif valable.
d. Identification d'un utilisateur
Uniquement sur : OpenNet, mixte, faux DarkNet
+ Attaque par corrélation
- études statistiques des requêtes provenant des noeuds auxquels on est
directement connectés
- ex : pour un fichier de 4Go, il faut 270 000 requêtes.
Un noeud OpenNet a 20 connexions, soit 13 500 morceaux/connexion
+ Attaque adaptative
- se faire une idée de la position approximative d'une requête sur le cercle
- s'en approcher et si on arrive à se connecter au noeud
-> attaque par corrélation
V. Démonstration
...
Conclusion
- Bonne idée initiale
- A donné naissance à beaucoup d'autres logiciels P2P
- Problèmes d'éthiques
- Equilibre entre totale liberté et total contrôle ?
- Difficulté à trouver des informations cohérentes.
Bibliographie
http://proton.inrialpes.fr/~gruber/Courses/DistributedSystems/fundamentals-part1.pdf/
http://doc-fr.freenetproject.org/Description_technique#Le_stockage_de_l.27information
http://fr.wikipedia.org/wiki/Freenet/
http://freenetproject.org/
http://doc-fr.freenetproject.org/Accueil
http://doc-fr.freenetproject.org/Accueil
http://en.wikipedia.org/wiki/Freenet
http://linuxfr.org/2008/04/02/23924.html
http://wiki.freenetproject.org