Le projet de l’Internet invisible (I2P)

I2P un réseau anonyme, exposant une couche simple que les applications peuvent utiliser afin d’envoyer anonymement et en sécurité des messages de l’une à l’autre. Le réseau lui-même est strictement basé message (à la IP), mais il y a une bibliothèque disponible permettant la communication fiable en continu au-dessus de cela (à la TCP). Toute la communication est chiffrée de bout en bout (au total il y a quatre couches de chiffrement utilisées lors de l’envoi d’un message) et même les points de fin ("destinations") sont des identifiants cryptographiques (essentiellement une paire de clés publiques).

Comment ça marche ?

Pour anonymiser les messages envoyés, chaque application client fait construire à son « routeur » I2P quelques « tunnels » entrants et sortants, une séquence de pairs qui passent des messages dans une direction (vers et à partir du client, respectivement). À son tour, quand un client veut envoyer un message à un autre client, le client passe ce message à l’un ses tunnels sortants, en ciblant l’un des tunnels entrants de l’autre client, pour finalement atteindre la destination. Chaque participant dans le réseau choisit la longueur de ces tunnels, et ce faisant, fait un compromis entre anonymat, latence et débit, d’après ses propres besoins. Le résultat est que le nombre de pairs qui relaye chaque message de bout en bout est le strict minimum nécessaire pour répondre au modèle de menace à la fois de l’expéditeur et du destinataire.

La première fois qu’un client veut en contacter un autre, ils envoient une requête à la « base de données du réseau », entièrement distribuée, une table de hachage distribuée (DHT) à structure personnalisée fondée sur l’algorithme Kademlia. Cela est fait afin de trouver efficacement les « tunnels entrants » de l’autre client. Les messages subséquents qu’ils échangent incluant habituellement ces données, aucune autre consultation de la base de données de réseau n’est nécessaire.

Plus de détails sur la façon dont I2P fonctionne sont disponibles.

Que pouvez-vous faire avec ?

Dans le réseau I2P, les applications ne sont pas limitées dans la façon dont elles peuvent communiquer ; celles qui utilisent habituellement UDP peuvent utiliser la fonctionnalité de base d’I2P, et celles qui utilisent habituellement TCP peuvent utiliser la bibliothèque de diffusion qui ressemble à TCP. Nous avons une application de pont TCP/I2P générique (« I2PTunnel ») qui permet aux utilisateurs d’acheminer des flux TCP vers le réseau I2P, mais aussi de recevoir des flux du réseau et de les acheminer vers une adresse TCP/IP précise.

I2PTunnel est utilisé actuellement pour permettre aux utilisateurs de faire tourner leur propre site Web anonyme (« site eep ») en faisant fonctionner un serveur Web normal et en dirigeant un « serveur » I2PTunnel vers ce dernier, serveur accessible anonymement par I2P avec un navigateur Internet normal en exécutant un mandataire HTTP I2PTunnel (« mandataire eep »). De plus, nous utilisons la même technique pour faire fonctionner un réseau IRC anonyme (où le serveur IRC est hébergé anonymement et sur lequel les clients IRC normaux utilisent un I2PTunnel pour le contacter). D’autres efforts de développement d’applications existent aussi, comme la construction d’une application optimisée de transfert segmenté de fichiers (semblable à BitTorrent), un magasin de données distribué (semblable à Freenet ou MNet), et un système de blogage (un « LiveJournal » entièrement distribué), mais elles ne sont pas encore prêtes à être utilisées.

I2P n’est pas en lui–même un réseau « mandataire sortant » – le client auquel vous envoyez un message est l’identifiant cryptographique, pas une certaine adresse IP, donc le message doit être adressé à quelqu’un exécutant I2P. Cependant, il est possible pour ce client d’être un proxy sortant, vous permettant de vous servir anonymement de sa connexion Internet. Pour démontrer ceci, le « mandataire eep » acceptera les URL normales non I2P (par exemple « http://www.i2p.net ») et les acheminera vers une destination précise qui exécute un mandataire HTTP squid, permettant ainsi simplement la navigation anonyme sur le Web normal. De tels simples mandataires sortants ne sont pas viables à long terme pour plusieurs raisons (incluant le coût d’en faire tourner un, aussi bien que l’anonymat et les problèmes de sécurité qu’ils introduisent), mais dans certaines circonstances cette technique est parfois appropriée.

L’équipe de développement I2P est un groupe ouvert, bienvenue à tous ceux qui sont intéressés à s’impliquer , et tout le code est open source. Le noyau I2P SDK et la mise en œuvre actuelle du routeur sont faites en Java (qui marche actuellement avec sun et kaffe, support gcj prévu pour plus tard), et il y a une API basée sur socket simple pour accéder au réseau depuis d’autres langages (avec une bibliothèque en langage C, tandis que Python et Perl sont en développement). Le réseau est activement développé et n’a pas encore atteint la version 1.0, cependant la feuille de route actuelle décrit notre calendrier.