mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 19:42:37 +02:00
Atelier ZeroNet
This commit is contained in:
parent
632e833836
commit
dc43292590
6 changed files with 174 additions and 20 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
output
|
output
|
||||||
|
cache
|
||||||
|
|
143
content/crypto/2016.03.ZeroNet.md
Normal file
143
content/crypto/2016.03.ZeroNet.md
Normal 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).
|
|
@ -1,9 +1,9 @@
|
||||||
Le mail doit mourir
|
Le mail doit-il mourir ?
|
||||||
###################
|
########################
|
||||||
|
|
||||||
:status: draft
|
:status: draft
|
||||||
:date: 2015-11-24
|
: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 ?
|
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.
|
mail fonctionnel.
|
||||||
|
|
||||||
Le mail réponds à un besoin de communication asynchrone qui permet des
|
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
|
conversations plus réfléchies qu'un simple chat (miaou). Il est tout à fait
|
||||||
d'utiliser certaines technologies existantes afin de constuire le futur de
|
possible d'utiliser certaines technologies existantes afin de constuire le
|
||||||
l'email, pour lequel:
|
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;
|
communique avec qui, et quand;
|
||||||
- Le chiffrement est fort et protégé d'une phrase de passe;
|
- Le chiffrement serait 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
|
- La fuite d'une clé de chiffrement utilisée dans un échange ne permette pas de
|
||||||
l'ensemble des échanges (forward secrecy);
|
déchiffrer l'ensemble des échanges (forward secrecy);
|
||||||
- Il ne soit pas possible de réutiliser les données pour incriminer l'emmeteur
|
- Il ne soit pas possible de réutiliser les données comme preuve pour
|
||||||
ou le recepteur des messages (deniability);
|
incriminer l'emmeteur du message (deniability);
|
||||||
|
|
||||||
Avec au moins ces besoins en tête, il semble qu'une revue de l'ensemble des
|
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>`_,
|
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
|
Malheureusement, Pond est le projet d'une seule personne, qui veut plutôt
|
||||||
utiliser ce code comme demonstration du concept en question.
|
utiliser ce code comme demonstration du concept en question.
|
||||||
|
@ -47,7 +47,7 @@ comparaisons qui me semblaient utiles (Nombre de developeurs, date du dernier
|
||||||
commit).
|
commit).
|
||||||
|
|
||||||
=========================== ====== ====== ====
|
=========================== ====== ====== ====
|
||||||
Project Pond Signal PGP
|
Project Pond Signal PGP
|
||||||
=========================== ====== ====== ====
|
=========================== ====== ====== ====
|
||||||
Forward secrecy
|
Forward secrecy
|
||||||
--------------------------- ------ ------ ----
|
--------------------------- ------ ------ ----
|
||||||
|
@ -56,6 +56,11 @@ Meta-data encryption
|
||||||
Deniability
|
Deniability
|
||||||
=========================== ====== ====== ====
|
=========================== ====== ====== ====
|
||||||
|
|
||||||
|
|
||||||
|
Axolotl v2
|
||||||
|
==========
|
||||||
|
|
||||||
|
Un des champions actuels (depuis quelques années déjà) dans
|
||||||
Hi,
|
Hi,
|
||||||
|
|
||||||
As a prelude, let me say that I've been following this mailing-list since over
|
As a prelude, let me say that I've been following this mailing-list since over
|
||||||
|
|
BIN
content/static/zeronet-presentation-fr.pdf
Normal file
BIN
content/static/zeronet-presentation-fr.pdf
Normal file
Binary file not shown.
|
@ -58,7 +58,7 @@ code on, that's `distutils2 <http://hg.python.org/distutils2/>`_.
|
||||||
My job
|
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.
|
and do some installation / uninstallation scripts.
|
||||||
|
|
||||||
All the work done is available in
|
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
|
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
|
interested about FOSS, dont hesitate any second, it's a really good
|
||||||
opportunity to work on interesting projects!
|
opportunity to work on interesting projects!
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
feel that I missed something. That I missed some good time, away from news and
|
||||||
agitation.
|
agitation.
|
||||||
|
|
||||||
What do I need? I tried to change my tools, it helped a bit, Still, I'm not
|
Working remotely is sometimes hard. Hard because you need to at the same time
|
||||||
focused like I would like to be. I've tried the pomodoro technique but… after
|
be in the discussions channels and work on the interesting projects. A real
|
||||||
some *pomodoros* I stopped using it, not sure why.
|
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
|
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
|
way I found to work is to unplug the cable. Literally. At work, at some point I
|
||||||
|
|
Loading…
Reference in a new issue