The Invisible Internet Project (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 chiffrage 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 cliente fait construire à son "routeur" I2P quelques "tunnels" entrants et sortants - une séquence de pairs qui passent des messages dans un sens (vers et à partir du client, respectivement). À son tour, quand un client veut envoyer un message à un autre client, le client transmet ce message dans l'un des tunnels sortants en ciblant l'un des tunnels entrants d'un autre client, pour finalement atteindre la destination. Chaque participant au réseau choisit la longueur de ses tunnels, et, ce faisant, fait un compromis entre anonymat, latence, et débit, en fonction de leurs besoins propres. Le résultat est que le nombre de pairs relayant chaque message d'extrémité en extrémité soit le strict minimum nécessaire pour répondre au modèle de menace de à la fois l'expéditeur et le récepteur.

La première fois qu'un client veut contacter un autre client, ils font une requête envers l'entièrement distribuée "base de données réseau" - une table de hachage distribuée (DHT) à la structurée personnalisée basée sur l'algorithme Kademlia. Ceci est fait afin de trouver efficacement les "tunnels arrivants" de l'autre client, mais des messages ultérieurs entre eux incluent habituellement ces données ainsi aucune nouvelle consultation de 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 restreintes dans la façon dont elles peuvent communiquer - celles qui utilisent habituellement UDP peut faire usage de la fonctionnalité I2P de base, et celles qui utilisent généralement TCP peuvent utiliser la bibliothèque streaming façon-TCP. Nous avons une application de pont TCP/I2P générique ("I2PTunnel") qui permet aux gens de transmettre des flux TCP vers le réseau I2P ainsi que de recevoir des flux depuis le réseau et de les transmettre vers une adresse TCP/IP spécifique.

I2PTunnel est utilisé actuellement pour laisser les gens exécuter leur propre site Web anonyme ("Eepsite") en exécutant un serveur web normal et en dirigeant vers celui-ci un 'serveur' I2PTunnel, auquel les gens peuvent avoir accès anonymement via I2P avec un navigateur Internet normal en exécutant un proxy HTTP I2PTunnel ("eepproxy"). De plus, nous utilisons la même technique pour exécuter un réseau IRC anonyme (où l'on héberge anonymement le serveur IRC, et les clients IRC standards utilisent un I2PTunnel pour le contacter). Il y a aussi d'autres efforts de développement d'applications, comme par exemple une consistant à construire une application de transfert de fichiers segmentés optimisée (à la BitTorrent), un système de fichiers distribué (à la Freenet / MNet), et un système de blogging (un LiveJournal pleinement distribué), mais celles-ci ne sont pas encore prêtes à être utilisées.

I2P n'est pas en lui-même un réseau "outproxy" - 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 outproxy, vous permettant de vous servir anonymement de sa connexion Internet. Pour démontrer ceci, le "eepproxy" va accepter des URL normales non-I2P (par exemple "http://www.i2p.net") et les expédier à une destination spécifique qui exécute un proxy HTTP squid, permettant ainsi simplement la navigation anonyme sur le Web normal. De simples outproxies comme ceci 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 soleil 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.