Atelier ZeroNet

This commit is contained in:
Alexis Métaireau 2016-03-17 11:46:39 +01:00
parent 632e833836
commit dc43292590
6 changed files with 174 additions and 20 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
output
cache

View file

@ -0,0 +1,143 @@
Title: Retours sur un atelier ZeroNet
Date: 2016-03-17
Headline: Comment contourner la censure grâce à un Web pair-à-pair ?
Mardi dernier se tenait [une *cryptoparty*](http://biblio.insa-rennes.fr/crypto)
dans les locaux de l'INSA de Rennes.
L'évènement s'étant rempli au delà de toutes les espérances, on m'a proposé de
venir y tenir un atelier, que j'ai proposé sur [ZeroNet](https://zeronet.io), un
petit projet fort sympathique qui pourrait devenir une nouvelle manière de
distribuer le Web, permettant notamment d'éviter la censure.
Avant toute autre chose, merci énormément à l'équipe de la bibliothèque de
l'INSA pour l'organisation de cet évènement qui à une réelle portée politique.
## Un peu d'histoire
Il me semble que Tim Bernes Lee (l'inventeur du Web) avait prévu le Web comme un
protocole décentralisé. Chacun hébergerait ses données et les servirait aux
autres, qui pourraient alors y accéder.
Avec ce fonctionnement, impossible alors d'accéder à des sites si leur auteur
n'est pas en ligne. Qu'à cela ne tienne, on s'est mis à avoir des machines qui
restent tout connectées au réseau 24 heures par jour. Et puis une machine ne
suffisant plus, on à eu des fermes de machines dans des *data centers* etc afin
de supporter les milliers d'utilisateurs des sites.
## Un Web décentralisé
ZeroNet permet (entre autres) de répondre à ce problème en proposant une manière
alternative de **distribuer le Web**, en pair à pair. Lors d'une visite d'un
site:
1. Vous contactez un *tracker* BitTorrent pour connaitre la liste des autres
visiteurs du site (les *pairs*).
2. Vous demandez aux *pairs* de vous donner les fichiers du site.
3. Vous validez que les fichiers servis sont bien les bons (en vérifiant la
signature attachée).
N'importe quel visiteur devient alors un *pair*, qui sert le site aux autres
visiteurs.
Parmi les nombreux avantages de cette approche, je note particulièrement que:
- Il est très difficile de censurer un site — Il est sur l'ensemble des machines
des visiteurs.
- Les attaques par *fingerprinting* sont impossibles: le navigateur Web se
connecte à un serveur *proxy* local.
- Vous détenez directement vos données et (par design) ne les donnez pas à des
silos (Facebook, Google, etc.)
Si vous êtes interessés par une démonstration rapide, j'ai enregistré une vidéo
de 10 minutes ou je parle en anglais avec une voix très grave.
<video controls="" src="http://alexis.notmyidea.org/zeronet.webm" width=800></video>
## Atelier
Pour l'atelier, j'ai choisi de faire une présentation rapide du projet ([j'ai
traduit les slides]({filename}/static/zeronet-presentation-fr.pdf) anglais
pour l'occasion — [accès aux sources](https://docs.google.com/presentation/d/158C_-V1ueNaaKHMBMBgGOVhunb9xrXzB3hC_g1N53c0/edit?usp=sharing))
avant d'installer ZeroNet sur les machines et de l'utiliser pour publier un
site.
### Partager sur le réseau local
Nous avons eu des soucis à cause du réseau (un peu congestionné) sur lequel
les ports utilisés pour la discussion entre *pairs* étaient fermés. Il est bien
sur possible de faire tourner le tout de manière indépendante du reste du réseau,
mais je n'avais pas prévu le coup.
Voici donc comment faire pour contourner le souci:
1. Installer et lancer un *tracker* BitTorrent (De manière surprenante,
[rien n'est packagé pour debian pour l'instant](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685575))
J'ai choisi d'installer [OpenTracker](http://erdgeist.org/arts/software/opentracker/#build-instructions)
2. Ensuite lancer ZeroNet avec des options spécifiques.
```bash
$ python zeronet.py --trackers udp://localhost:6969 --ip_external 192.168.43.207
$ python zeronet.py --trackers udp://192.168.43.207:6969 --ip_external 192.168.43.172
```
Il est nécessaire de spécifier l'adresse IP externe que chaque nœud expose pour
éviter qu'elle n'essaye d'aller la trouver par elle même: nous voulons l'adresse
du réseau local, et non pas l'adresse internet.
La prochaine fois je tenterais de venir avec un HotSpot Wifi et un tracker
BitTorrent dans la poche!
## Questions / Réponses
Il y avait quelques questions intéressantes auxquelles je n'ai pas toujours su
répondre sur le moment. Après quelques recherches, je rajoute des détails ici.
### Torrent + Tor = brèche de sécu ?
Il me semblait avoir entendu parler de problèmes de *dé-anonymisation*
[lors de l'utilisation de BitTorrent par dessus Tor](https://hal.inria.fr/file/index/docid/471556/filename/TorBT.pdf).
> Dans certains cas, certains clients torrents (uTorrent, BitSpirit, etc)
> écrivent directement votre adresse IP dans l'information qui est envoyée
> au tracker et/ou aux autres pairs.
> — https://blog.torproject.org/blog/bittorrent-over-tor-isnt-good-idea
[Ce n'est pas le cas de ZeroNet](https://github.com/HelloZeroNet/ZeroNet/issues/274), ce qui évacue le souci.
### ZeroMail, c'est lent non ?
Une des applications de démo, *ZeroMail*, propose un mechanisme qui permet de
s'envoyer des messages chiffrés sur un réseau pair à pair. L'approche choisie
est de chiffrer les messages avec la clé du destinataire et de le mettre dans
un *pot commun*. Tout le monde essaye de déchiffrer tous les messages, mais ne
peut déchiffrer que les siens.
Cela permet de ne **pas** fuiter de méta-données, [à l'inverse de PGP]({filename}../crypto/2015.05.pgp-problemes.rst).
Je n'ai en fait pas de réponse claire à donner à cette question: l'auteur de
ZeroNet me disait que 10MB (la limite de taille d'un site, par défaut)
correspondait à beaucoup de place pour stocker des messages, et qu'il était
possible de supprimer les anciens messages une fois qu'ils sont lus par exemple.
Une autre solution à laquelle je pensait était de créer un *ZeroSite* pour
chaque récipient, mais on connait à ce moment là le nombre de messages qu'un
utilisateur peut recevoir.
Je vois plusieurs problèmes avec le design actuel de ZeroMail (il me semble
assez facile d'y faire un déni de service par exemple). A creuser.
### Comment héberger des très gros sites ?
Par exemple, comment faire pour héberger Wikipedia ?
Il semble que la meilleure manière de faire serait de séparer Wikipedia en
un tas de petites ressources (par catégorie par ex.). Les gros médias pourraient
être considérés optionnels (et donc téléchargés uniquement à la demande)
### Est-ce qu'on à vraiment besoin d'un tracker ?
Le support d'une DHT [est souhaité](https://github.com/HelloZeroNet/ZeroNet/issues/57),
mais pour l'instant pas encore implémenté. L'utilisation de la DHT BitTorrent
n'est pas une option puisque [Tor ne supporte pas UDP](https://github.com/HelloZeroNet/ZeroNet/issues/57).

View file

@ -1,9 +1,9 @@
Le mail doit mourir
###################
Le mail doit-il mourir ?
########################
:status: draft
:date: 2015-11-24
:headline: Le mail est un protocole qui bien établi qui souffre de nombreux
:headline: Le mail est un protocole bien établi qui souffre de nombreux
problèmes. Est-ce qu'il ne serait pas temps de préparer la suite ?
@ -22,21 +22,21 @@ faire fuiter les metadonnées (au moins le destinataire) pour avoir un protocole
mail fonctionnel.
Le mail réponds à un besoin de communication asynchrone qui permet des
conversations plus réfléchies qu'un simple chat. Il est tout à fait possible
d'utiliser certaines technologies existantes afin de constuire le futur de
l'email, pour lequel:
conversations plus réfléchies qu'un simple chat (miaou). Il est tout à fait
possible d'utiliser certaines technologies existantes afin de constuire le
futur de l'email, pour lequel:
- Les méta-données sont chiffrées — Il ne soit pas possible de savoir qui
- Les méta-données seraient chiffrées — Il n'est pas possible de savoir qui
communique avec qui, et quand;
- Le chiffrement est fort et protégé d'une phrase de passe;
- La saisie d'une clé utilisée dans un échange ne permette pas de déchiffrer
l'ensemble des échanges (forward secrecy);
- Il ne soit pas possible de réutiliser les données pour incriminer l'emmeteur
ou le recepteur des messages (deniability);
- Le chiffrement serait fort et protégé d'une phrase de passe;
- La fuite d'une clé de chiffrement utilisée dans un échange ne permette pas de
déchiffrer l'ensemble des échanges (forward secrecy);
- Il ne soit pas possible de réutiliser les données comme preuve pour
incriminer l'emmeteur du message (deniability);
Avec au moins ces besoins en tête, il semble qu'une revue de l'ensemble des
projets existants pointe du doigt vers `pond <https://github.com/agl/pond>`_,
ou vers Signal.
ou vers `Signal <https://www.whispersystems.org/>`_.
Malheureusement, Pond est le projet d'une seule personne, qui veut plutôt
utiliser ce code comme demonstration du concept en question.
@ -56,6 +56,11 @@ Meta-data encryption
Deniability
=========================== ====== ====== ====
Axolotl v2
==========
Un des champions actuels (depuis quelques années déjà) dans
Hi,
As a prelude, let me say that I've been following this mailing-list since over

Binary file not shown.

View file

@ -58,7 +58,7 @@ code on, that's `distutils2 <http://hg.python.org/distutils2/>`_.
My job
------
I had to provides a way to crawl the PyPI indexes in a simple way,
I had to provide a way to crawl the PyPI indexes in a simple way,
and do some installation / uninstallation scripts.
All the work done is available in
@ -172,5 +172,3 @@ cheerfulness ! Many thanks too to the Google Summer of Code program
for setting up such an initiative. If you're a student, if you're
interested about FOSS, dont hesitate any second, it's a really good
opportunity to work on interesting projects!

View file

@ -14,9 +14,16 @@ And this thing makes me feel uncomfortable at the end of the day, because I
feel that I missed something. That I missed some good time, away from news and
agitation.
What do I need? I tried to change my tools, it helped a bit, Still, I'm not
focused like I would like to be. I've tried the pomodoro technique but… after
some *pomodoros* I stopped using it, not sure why.
Working remotely is sometimes hard. Hard because you need to at the same time
be in the discussions channels and work on the interesting projects. A real
myth.
In practice, I'm really bad at multi-tasking. I tried a few times the *Pomodoro*
technique, which forces me to focus on a task for 25mn, but this split of my day
into slices of 25mn breaks my natural flow.
So, what do I need? I tried to change my tools, it helped a bit. Still, I'm not
focused like I would like to be.
Maybe that's just me who needs some more persuasion over myself, but the best
way I found to work is to unplug the cable. Literally. At work, at some point I