Archive for the ‘Freenet’ Category

5 Fausses idées reçues à propos de Freenet

Saturday, December 5th, 2009

Comme je lis ça un peu partout et que j’en ai assez de toujours me répéter, voici les cinq préjugés à propos de Freenet qui n’ont pas (plus) lieu d’être :

1. Freenet est compliqué à utiliser

C’est sûrement le préjugé le plus faux de tous. Depuis l’introduction des niveaux de sécurité, il est très simple de configurer un noeud. Le nouvel installeur Windows est performant et il y a toujours l’installation avec un installeur Java ou bien en headless pour les autres machines. Je suis d’accord pour dire que fms n’est par exemple pas utilisable par n’importe qui, mais Freetalk sera très, très bientôt disponible, et il sera directement intégré dans le noeud.

Si vous ne me croyez pas, vous croirez peut-être l’auteur de l’article sur The Guardian :

Installing the software takes barely a couple of minutes and requires minimal computer skills. You find the Freenet website, read a few terse instructions, and answer a few questions [...] Then you enter a previously hidden online world.

Traduction approximative pour les non-anglophones : installer le logiciel prend à peine quelques minutes et demande très peu de connaissances techniques. Vous allez sur le site de Freenet, lisez quelques instruction et répondez à quelques questions [...] Ensuite vous pouvez entrer dans un monde auparavant caché.

2. Freenet n’a aucun contenu

Il y a du contenu. Il n’est juste pas servi sur un plateau d’argent comme sur le web classique. Il y a les forums de discussion (fms, Freetalk), un plugin IRC (frirc, encore en développement), un plugin permettant de publier des blogs simplement (FlogHelper, développé et maintenu par moi même).

Il y a également l’index par défaut, assez conséquent, permettant à Library (le plugin permettant de faire des recherches) de trouver des résultats. Et si ça ne produit aucun résultat convaincant il y a toujours les indexes. Même si la quantité d’informations stockées n’est pas du tout du même ordre de grandeur que sur le web classique, il est faux de dire qu’il n’y a rien.

3. Il y a déjà Tor, I2P, …

Oui mais non. Ça ne fonctionne pas de la même façon. Tor est exactement l’opposé de Freenet. Tor permet d’accéder au web classique, Tor publie une liste de tous les noeuds de sortie, Tor ne stocke pas de données d’une façon décentralisée.

D’une façon générale, Tor et I2P n’ont pas de datastore distribué, Freenet oui. Qu’est-ce qu’un datastore distribué ? C’est ce qui fait que quand vous insérez du contenu dans Freenet, personne ne peut le supprimer. Et plus le contenu est populaire, plus il se répand et est stocké chez de nombreuses personnes. Il a donc moins de risques d’être effacé par un autre contenu nouvellement inséré. D’ailleurs, si vous coupez votre noeud, le contenu que vous avez inséré est toujours accessible. Le fait qu’il soit distribué (et décentralisé) fait qu’il n’y a pas un unique point d’échec. Tor et I2P ne fonctionnent pas selon ce principe ; l’anonymat fourni n’est pas le même.

Disons pour résumer que le seul point commun entre Freenet, Tor et I2P est qu’ils sont tous les trois des logiciels de P2P utilisant la cryptographie. Mais c’est tout, le fonctionnement, les objectifs et les moyens ne sont pas du tout les mêmes.

4. Freenet est inutile

Pas du tout. Il y a déjà des pays qui en ont besoin, comme par exemple en Chine, en Corée du Nord ou la liberté d’expression sur Internet n’est pas garantie. Cela pourrait aussi devenir le cas en Europe dans un futur plus ou moins proche… Freenet garantit une liberté d’expression non restreinte permettant de s’exprimer sans pour autant révéler son identité. L’idéal pour contrer la censure.

Je vous rappelle aussi qu’il est beaucoup plus simple de conserver sa liberté d’expression quand on la possède encore que de la regagner lorsqu’on l’a perdue.

5. Freenet est lent

Rappelez-vous que plus un contenu est populaire, plus il se propage et donc plus il devient facile d’y accéder. La place est limitée, on ne peut pas tout conserver. On obtient quand même de très bons taux de transferts (de l’ordre de 100 KiB/s) sur les gros fichiers populaires.

Comparé au web classique, ça n’est pas aussi rapide du tout. Même si grâce au « Client Cache » les sites que vous visitez deviennent rapidement accessibles après.

Related Posts:

Amélioration de l’affichage des noeuds connectés (Freenet)

Wednesday, December 2nd, 2009

Il y a quelques mois, j’ai implémenté une barre de statut pour Freenet, l’idée était de Toad et j’étais plûtot emballé. Le but ? Améliorer la facilité d’utilisation en concentrant des informations dans une barre. L’emplacement dépend du thème, les thèmes bar défaut l’ont en haut alors que mon thème minimaliste la met en bas, fixe (c’est à dire qu’elle ne bouge pas même si on défile la page).

Voici en gros à quoi ressemble la barre :fn_statusbar_old

On aperçoit tout à gauche les messages divers, la couleur dépend de la gravité des messages (les erreurs sont affichées directement en haut de la page, les avertissements s’affichent avec un fond jaune dans la barre et les autres messages mineurs s’affichent en bleu dans la barre), puis le choix de la langue (le choix de placer ça ici est relativement discutable, mais Toad le voulait et ça prend pas beaucoup de place) ; après tout, pourquoi pas. Il y a ensuite bien sûr le switch mode simple/avancé qui permet d’économiser de la place en haut, les niveaux de sécurité qui sont colorés (LOW, NORMAL, HIGH, MAXIMUM) avec une courte description qui s’affiche quand on passe la souris dessus, puis le nombre de noeuds connectés.

Ce dernier élément n’est pas très utile en soi ; l’utilisateur ne sait pas trop comment l’interpréter. Quelles sont les bonnes valeurs ? C’est pour cela qu’on a eu l’idée (enfin plutôt digger3 sur IRC) d’utiliser une barre de progression à la place. Une sorte d’« indicateur de vitesse » qui permettrait de clarifier cela. Le texte est déjà coloré en fonction du nombres de noeuds connectés, j’ai réutilisé ce système pour la barre de progression mais en scindant deux cas :

  • Si le noeud utilise l’Opennet (cela inclut les noeuds hybrides qui sont connectés à des amis et à des inconnus), alors la barre sera colorée en fonction du pourcentage de noeuds connectés ; la limite au nombre de noeuds connectés est déterminée par la limite de bande passante configurée.
  • Si le noeud est en Darknet pur (c’est à dire qu’il ne se connecte qu’à des amis), alors la barre sera colorée en fonction du nombre brut de noeuds connectés. La notion de pourcentage n’a plus de sens car il n’y a pas de limite formelle au nombre d’amis, et il est tout à fait normal de ne pas avoir 100% des amis connectés à un instant quelconque.

Voici un aperçu de la nouvelle barre de statut qui sera normalement présente dans le build 1240 de Freenet :statusbar_redstatusbar_orangestatusbar_yellowgreenstatusbar_tooltip

Voici un screenshot complet d’une page, avec le thème Minimalist :statusbar_fullscreenshot

Au passage, le persona Firefox est de moi, une réalisation faite à la va vite sous Inkscape en dix minutes.

Le commit en lui même, au cas ou vous voudriez voir à quel point je fais du mauvais code :-|

Voilà tout ; ce petit changement n’est pas grand chose en soi, mais l’interface doit avant tout être simple pour les utilisateurs, qui n’ont pas les mêmes connaissances techniques que nous. Cela n’est pas si simple que cela au premier coup d’oeil ; il faut par exemple éviter d’utiliser le mot peer et utiliser friend ou stranger à la place.

Related Posts:

Première release de FlogHelper

Saturday, November 28th, 2009

Tout est parti de ce message sur la mailing-list de Freenet  (réponse de Toad) :

Fascinating… What we really need in this area IMHO is a web-based blogging interface:
- It must be as easy to use for a newbie as the centralised blogging sites, for writing blogs.
- It must support basic blog features – sort by date, tags, etc.
- It must have a web interface so it can integrate into fred as a plugin, and add itself to the Browse menu. IMHO this is important, and http://freenet.uservoice.com/ seems to agree.
- It should have at least two themes, and the default should look reasonable.
- It must support embedding pictures, linking to other freesites, and linking to arbitrary files. Eventually we will have embedded video, but that will require more work on other parts of fred.
- *Eventually* it will need integration with Freetalk, for posting comments, for announcing it in the first place, and maybe for the whole blog to be just showing somebody’s top level posts… But p0s has a lot of work to do on Freetalk/WoT, and IMHO the earlier we have an easy to use blog tool integrated into the UI the better.
[...]
When you’re not busy with writing fred themes, would you be interested?

Bien évidemment, j’étais intéressé. L’occasion de contribuer à un projet que je soutiens de façon significative. J’ai donc crée un répo Git pour faire quelques expérimentations… Je n’avais aucune idée de comment créer un plugin pour Fred.

Après m’être rendu compte que les plugins étaient en fait codés à l’arrache en recréant la roue à chaque fois même pour les trucs les plus simples (localisation de l’interface, stockage de données de façon sécurisée sans avoir à refaire des milliers de lignes de code de crypto), j’ai réalisé la quantité de travail qu’il fallait faire si je voulais faire un truc propre. J’ai donc factorisé toute l’interface de localisation du noeud afin d’utiliser exactement le même code pour les plugins. Sur le coup, ça a été beaucoup de changements pour pas grand chose, mais maintenant on en profite bien : en changeant quelques lignes de code seulement, il est possible de traduire les plugins en utilisant la même interface que pour le noeud ; et WoT et Freetalk utilisent aussi ce nouveau système depuis peu.

Après avoir fixé ce problème de localisation, je bute sur un autre problème : comment stocker des données de façon sécurisée sans se farcir plein de code de crypto ? (Je déteste la crypto, c’est compliqué et une toute petite erreur peut tout ruiner ; d’autant plus que le noeud a déjà ce code là.) J’ai pensé à pas mal de méthodes : utiliser des fichiers XML, utiliser une base de données db4o dans un fichier à part, utiliser node.db4o, … C’est finalement cette dernière solution que j’ai choisie. Avec l’aide de Toad, j’ai crée une classe simple PluginStore permettant aux plugins de stocker des données dans node.db4o sans se soucier des problèmes de chiffrement, … Le seul problème est en cas de corruption de ce fichier ; c’est pourquoi j’ai également crée des méthodes pour exporter et importer des PluginStore sous forme de fichiers. C’est donc aux utilisateurs de faire attention et de sauvegarder leur données cruciales dans un endroit sûr ; un auteur de Flog peut très bien publier du contenu qui serait susceptible de le mettre en prison ou de lui attirer de gros ennuis dans son pays, il faut donc faire attention.

Finalement, quelques mois plus tard arrive la première version fonctionnelle de FlogHelper, manquant encore cruellement de fonctionnalités intéressantes et remplie de bugs.

Après avoir fignolé l’interface et ajouté les fonctionnalités telle que la recherche intégrée (ce qui implique de générer un index XML, peu simple vu comment c’est documenté), les tags, les pièces jointes, … Le plugin est passé semi-officiel, ce qui veut dire que la source est vérifiée par Toad et que les Jars sont hébergés sur les miroirs, mais il n’est pas encore promu en tant que plugin officiel sur la page des plugins.

Le plugin sera officiel dès que WoT sera lui-même officiel, espérons que ça sera pour bientôt.

Liens

Related Posts:

The Guardian parle de Freenet

Saturday, November 28th, 2009

Andy Beckett a publié jeudi un article à propos des darknets et plus particulièrement de Freenet.

Sans entrer dans les détails, je trouve que l’article fait trop dans le « sensationnel » en écrivant par exemple en première phrase « In the ‘deep web’, Freenet software allows users complete anonymity as they share viruses, criminal contacts and child pornography » (traduction approximative : Dans le web profond, Freenet permet à ses utilisateurs un anonymat total leur permettant de partager des virus, des contacts entre criminels et des contenus pédophiles)… Cela est certes vrai, et on ne peut pas du tout mesurer l’amplitude des « mauvais usages » du réseau Freenet.

L’auteur a très largement surestimé la taille du réseau, citant par exemple « The deep web is currently 400 to 550 times larger than the commonly defined world wide web [...] » ; il y a confusion ici entre réseaux de type Freenet, et protocole différent d’http. Peut-on considérer le P2P, IRC ou encore Usenet comme « web profond » ?

Mis à part, cela a permis de faire connaître Freenet à un plus grand nombre de lecteurs, et d’utilisateurs/contributeurs potentiels. Voici le graphe des noeuds connectés à mon propre noeud, la quantité  de noeuds qui ont eu besoin de s’introduire sur le réseau a pratiquement doublé en un seul jour. Il s’agit de la zone Seeding for sur le graphe. Cela reviendra sûrement à la normale dans quelques jours, semaines si l’article reste plus longtemps dans les pages les plus consultées.

freenetpeers_2592000

Related Posts:

Sortie de Freenet 0.7.5

Tuesday, June 16th, 2009

Freenet est un réseau anonyme et chiffré qui est basé sur Internet. Il a été créé par Ian Clarke, est distribué sous licence GPL et est maintenu par beaucoup de développeurs bénévoles ainsi qu’un développeur à plein temps, payé grâce aux donations. Le but principal est de prôner la liberté d’expression et de rendre toute censure impossible. C’est pourquoi, par exemple, il est impossible de supprimer du contenu de Freenet une fois qu’il a été inséré dans le réseau. De même, chaque noeud (un noeud est un ordinateur faisant tourner Freenet) n’a aucun moyen de savoir ce qui transite et ce qui est stocké dans le disque dur.

De façon plus pratique, Freenet permet d’insérer des Freesites, un ensemble de pages xHTML formant un site anonyme ou non, d’effectuer du partage de fichiers, de consulter des groupes de discussion et de s’envoyer des Freemails (système d’e-mail basé sur le réseau Freenet).

Freenet est surtout connu pour avoir soulevé de nombreux débats éthiques, du fait de l’absence totale de censure. Cependant, si vous tenez à conserver un réseau où vous serez sûr que personne ne pourra vous enlever votre liberté d’expression, alors Freenet devrait vous intéresser, surtout avec les projets de loi récents visant à filtrer Internet en France (LOPPSI). Le réseau est vraiment conçu pour ça, les développeurs eux-mêmes ne pouvant arrêter le réseau, même sous pression juridique.

freenet-bunny

Un historique proche relativement chargé

Il y a quelques mois, ce projet a bien failli ne pas continuer d’exister, et ceci pour plusieurs raisons.

Tout d’abord, le bénévole chargé de l’administration du serveur principal hébergeant le serveur SVN a décidé qu’il ne pouvait plus continuer. Or, personne d’autre n’avait les compétences nécessaires et la confiance nécessaire pour le remplacer. Pour pallier cela, les sources ont été déplacées sur GitHub. Ce choix est discutable, GitHub pourrait facilement décider d’arrêter d’héberger les sources de Freenet à cause de problèmes légaux ! Finalement, git permet assez facilement de s’adapter à ce cas de situation et donc cette éventualité ne causerait pas la mort du projet.

Vu que le projet n’est alimenté en argent que par les dons et qu’un développeur est payé à plein temps, l’argent a commencé à manquer de façon très sérieuse. C’est aussi pour cette raison que le serveur principal a été coupé suite à l’abandon du bénévole chargé de son administration, il représentait un coût non négligeable. Pour donner un indice, le projet a survécu avec moins de 1000$ en réserve pendant plusieurs mois.

Finalement, à la surprise de tous, Google a versé une importante donation de 18 000$ au projet au début du mois de mai. La survie du projet n’est donc plus un problème à moyen terme. Pour rappel, Google a joué un rôle important pour le projet, notamment grâce aux Google Summer of Code (GSoC).

Les nouveautés de la version 0.7.5

La version précédente, 0.7, datait de mai 2008. Mais cela ne veut pas dire qu’aucune nouveauté n’est apparue depuis plus d’un an. Le fonctionnement de Freenet est un peu particulier au niveau des versions. Le noeud se met à jour lui-même (en général de façon automatique) via le réseau Freenet ; le numéro de version est donc une notation symbolique pour mettre en évidence les nouveautés des précédents builds. Les développeurs n’attendent pas de date précise pour ajouter de nouvelles fonctions, ils le font lorsqu’ils jugent de façon arbitraire qu’il y en a eu suffisamment pour changer le numéro de version.

Depuis la version 0.7, de très grosses nouveautés ont été implémentées. Voici un résumé non exhaustif des plus significatives.

Résultat de plus d’un an de travail acharné, l’intégration de db4o (Database for Objects) a permis d’augmenter très grandement la performance et de réduire les ressources utilisées par le noeud. Il est par exemple possible de télécharger plusieurs gigaoctets de fichiers sans pour autant observer une augmentation de la quantité de mémoire vive utilisée. Un noeud typique consommera maintenant entre 100 et 250 mégaoctets de mémoire vive, pas plus. Grâce à db4o, on peut maintenant faire des petits serveurs dédiés Freenet en réutilisant du vieux matériel, ou bien avec du matériel miniature. Cela laisse de belles perspectives pour l’avenir : Freenet sur de l’embarqué.

L’interface web de Freenet (FProxy) a été améliorée afin de la rendre beaucoup plus accessible aux néophytes. De nouveaux installeurs ont été mis au point afin de rendre l’installation plus simple, et de renforcer la compatibilité avec Windows Vista.

Enfin, la majorité du système de plugins a été refondue en profondeur. Cela permettra par exemple d’avoir des dépendances inter-plugins, ou encore leur mise à jour automatique. C’est une modification peu importante pour l’utilisateur, mais c’est une brique nécessaire à l’achèvement de la prochaine “grosse” version de Freenet, la 0.8.

Qu’attendre à court/moyen terme ?

Freenet 0.8 comportera Freetalk/WoT, un nouveau système officiel pour communiquer avec les autres utilisateurs. Annoncé depuis longtemps comme révolutionnaire, tout le monde l’attend avec impatience. Étant donné que Freenet est un réseau entièrement décentralisé, ce système se basera sur une technique de “Toile de confiance” (Web of Trust). En gros, vous devez noter votre confiance envers les autres utilisateurs, afin de rendre impossible toute tentative de spam. Les autres utilisateurs vous notent également. Il paraît évident que les identités ayant de très mauvaises notes seront ignorées des autres, et ne pourront donc plus communiquer. C’est un système de filtrage décentralisé et « démocratique » en quelque sorte : chacun a son mot à dire, et le système se régule de lui-même.

Un nouveau type de clé sera aussi créé : les MHKs (Multiple not Duplicated Hash Key) serviront à partager de gros fichiers plus efficacement qu’à l’heure actuelle. Le fonctionnement est complexe, mais globalement, les blocs d’index seront insérés avec plus de redondance afin d’éviter la perte prématurée de données.

Enfin, les noeuds pourront aussi partager leur bloom filter avec leurs voisins immédiats. Cela signifie que votre noeud “saura” ce que stocke chacun de ses voisins, ce qui représentera un gain important de performances. En revanche, l’implémentation d’un tel système est très délicate, et il faudra donc être patient.

Le mot final

Cette avancée symbolique de Freenet a bien sûr pour but d’attirer plus d’utilisateurs, mais aussi de faire connaître Freenet aux internautes du monde entier : Freenet est indétectable de l’extérieur si utilisé en mode Darknet (en se connectant uniquement à des amis à proximité de confiance), et il faut donc au moins savoir que des solutions existent pour pallier la tendance qu’ont les gouvernements à filtrer le web, ou à envisager de le faire, tout au moins. Freenet est tout de même utilisable si on ne connaît personne qui l’utilise : le mode Opennet vous connectera à des inconnus (la seule différence par rapport au Darknet, c’est qu’on peut savoir que vous utilisez Freenet. Mais comme il n’est pas encore illégal en France, ça ne pose aucun problème).

Enfin, Freenet étant développé entièrement en Java, il est compatible avec n’importe quel système d’exploitation disposant d’une JVM version 1.5 au minimum. Cela inclut Windows, Mac OS, GNU/Linux, FreeBSD, Solaris, …

(Publication originale ici, rédigée par moi-même.)

Related Posts: