mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 19:42:37 +02:00
- Added the ability to display book cover for the category "Lectures" if ISBN cover is available. - Moved author's name into a small tag for better hierarchy and readability. - Implemented a feature to indicate link sizes depending on the number of articles associated with a given tag. - Implemented a mini footer element displaying an RSS feed icon. - Improved category display using description dictionary. - Added a new plugin "isbn_downloader" to fetch ISBN information when needed. - Included the count of articles for each category. - Implemented changes for better layout and readability of tags and categories. - Adjusted the layout of the webpage, improving the overall look of the page. - Included "requests" in the requirements.txt for supplanting dependencies required by the new plugin and/or features.
141 lines
6.6 KiB
Markdown
141 lines
6.6 KiB
Markdown
Title: Retours sur un atelier ZeroNet
|
|
Date: 2016-03-17
|
|
Headline: Comment contourner la censure grâce à un Web pair-à-pair ?
|
|
Category: crypto
|
|
|
|
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 connectées au réseau 24 heures par jour. Et puis une machine ne
|
|
suffisant plus, on a 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 où 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]({static}/docs/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 mécanisme 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}/code/2015-05-25-pgp-problemes.md).
|
|
|
|
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).
|