S'inscrire
Instructions

Dark Web, partie 4 : Qu'est-ce que l'I2P et comment ça marche ?

  • 4 oct. 2023, 01:40
  • 15 minutes

Dark Web, partie 4 : Qu'est-ce que l'I2P et comment ça marche ?

Dans l'article précédent, nous avons abordé ce que sont Freenet et le navigateur Tor et ce que vous pouvez faire avec eux sur le dark web.

Dans ce nouvel article, nous expliquons ce qu'est le réseau I2P, comment il fonctionne et quelles tâches il résout.

Dans les autres articles de cette série :

  • Dark Web, partie 1 : qu'est-ce que le Darknet et pourquoi l'utilise-t-on ? 

  • Dark Web, partie 2 : comment fonctionnent les sites .onion 

  • Dark Web, partie 3 : qu'est-ce que Freenet ? 

  • Dark Web, partie 4 : qu'est-ce que l'I2P et comment ça marche ? ← vous êtes ici

  • Dark Web, partie 5 : comment accéder au Darknet via Tor, I2P et Freenet


Qu'est-ce que l'I2P

Invisible Internet Project (I2P signification) est un autre réseau peer to peer anonyme qui fonctionne au-dessus de l'internet ordinaire. Il est décentralisé, c'est pourquoi il ne dispose pas de serveurs DNS mais d'un « carnet d'adresses » mis à jour automatiquement. Le rôle des adresses est joué par les clés cryptographiques qui ne sont pas émises par des ordinateurs réels. Chaque utilisateur du projet reçoit une clé différente qui ne peut être tracée.


Pour en savoir plus sur le fonctionnement des réseaux peer-to-peer, veuillez consulter « Dark Web, partie 1 : qu'est-ce que le Darknet et pourquoi l'utilise-t-on ? ».


Le réseau lui-même est apparu en 2003 en tant que projet open source. Il s'agit désormais d'un projet entièrement ouvert, développé et soutenu par des passionnés du monde entier. 


Invisible Internet Project a été créé en partant du principe que tous les hôtes intermédiaires sont des voyous. C'est pourquoi tous les tunnels du réseau fonctionnent dans le même sens : le trafic entrant passe par une chaîne de nœuds et le trafic sortant par une autre. En outre, toutes les informations de l'I2P sont cryptées et superposées dans les tunnels. Il est donc très difficile de voler une demande particulière.

Comment utiliser I2P : fonctionnement

Dans Invisible Internet Project, toutes les demandes sont cryptées du côté de l'émetteur et décryptées du côté du récepteur à l'aide des algorithmes NTCP2 et SSU. Ce sont les analogues cryptographiques de TCP et UDP, qui chiffrent toutes les informations transmises au routeur.


Par conséquent, personne ne peut intercepter les demandes. Pas même le nœud intermédiaire. Il ne saura pas ce qu'il est advenu de la demande par la suite : si elle a été traitée par la demande suivante ou transmise ailleurs.


I2P réseau se compose de : 


  • Routeurs qui ont des adresses I2P et des IP normales. Il s'agit essentiellement de nœuds de transit. Ils sont tous identiques et ne diffèrent pas les uns des autres.

  • Points d'extrémité : serveurs ou clients dont l'emplacement réel est inconnu.

  • Tunnels : les chemins sur lesquels une requête passe et où se rassemblent plusieurs routeurs.


Routeurs, nœuds de transit : partie d'une chaîne de serveurs qui forment un tunnel pour une demande. Personne ne sait quelle demande et quel tunnel passe par quel tunnel. Une autre particularité est que l'utilisateur détermine le point de destination de la demande, la longueur des tunnels et le nombre de tunnels.


Le tunnel peut être imaginé comme un camion ordinaire qui passe plusieurs barrages routiers. Il ne s'arrête dans aucun d'entre eux et personne ne sait donc où va le camion ni ce qui est stocké à l'arrière. Cela dit, tout le monde peut regarder le camion, mais seul le barrage récepteur peut l'arrêter.




Chemin d'interrogation I2P : les cercles vides sur le diagramme sont des routeurs qui sont dispersés dans le monde entier. Le vert correspond aux tunnels sortants, le rouge aux tunnels entrants. Expliquons la différence 


Les points de terminaison sont plus compliqués. En substance, les points d'extrémité sont une sorte de « serveur » pour un réseau normal. C'est-à-dire que les demandes y vont comme un routeur. Mais personne ne sait qu'un point final particulier du réseau est un point terminal. En sus, personne ne sait à qui et à quelles données sont destinées. Seul le terminal de destination peut savoir que les données lui sont destinées. Il n'est donc pas possible de calculer l'emplacement du « point ».


Pour y voir plus clair, introduisons deux concepts : LeaseSet et Floodfill ou Routerinfo.


Un LeaseSet est une collection d'informations dans I2P qui contient des données sur les tunnels d'entrée, les clés cryptographiques et l'adresse de destination.


Un Floodfill est un routeur qui agit comme un livre de référence, stockant des leasesets et connaissant les bons endroits que l'utilisateur recherche. Et s'il ne le sait pas, il le redirige vers un autre service d'assistance.


Chaque utilisateur de l'I2P peut devenir un floodfill. Il vous suffit de cocher la case dans les paramètres du logiciel. Nous allons décrire la configuration elle-même dans les sections suivantes.


Quand un utilisateur cherche quelque chose dans I2P site, il demande un certain leaseset à un floodfill aléatoire. 


Si le floodfill ne connaît pas l'adresse demandée, il donne l'adresse de trois autres floodfills et la demande leur est transmise. Ils vérifient à leur tour les leasesets dans leur base de données. Et ainsi de suite jusqu'à ce que l'adresse souhaitée soit trouvée.




Il s'agit d'un schéma conditionnel de la manière dont se présente une demande d'un utilisateur à un floodfill. C'est en fait plus compliqué que cela, mais il y a quelques éléments importants que nous n'avons pas encore abordés


Le profil d'inondation souhaité est sélectionné en fonction de l'adresse cible et de la date du jour. À partir de ces informations, le hachage SHA256 est dérivé : les données sont aussi longues que l'adresse régulière.


Un hash est une fonction qui effectue une opération mathématique ou logique sur des données. Il transforme une grande quantité d'informations en une chaîne de caractères relativement courte et sert d'identifiant pour les données. Par exemple, si deux images diffèrent d'au moins un pixel, leur hachage sera différent.

Le système effectue ensuite une recherche dans la base de données des filtres d'inondation du routeur local et sélectionne celui qui donnera le nombre le plus bas en utilisant l'opération « SAUF OU » avec le bloc « adresse cible + date ». 


Il s'agit essentiellement d'une fonction d'appel de fonds qui vous aide à trouver la bonne adresse. Toutefois, l'adresse est générée de manière aléatoire, de sorte que le floodfil signale les adresses des trois voisins que nous contactons à la recherche de l'adresse souhaitée. L'algorithme de date du floodfill est utilisé pour randomiser les demandes. De cette façon, chaque demande de nouvelle adresse passera par un nouveau floodfill et ils changeront tous les jours.


Un nœud de réseau actif possède en moyenne 5000 routeurs actifs dans sa base de données et reçoit des centaines, voire des milliers, de connexions de raccordement totalement aléatoires.


Il y a toujours beaucoup d'informations qui circulent dans les points d'extrémité, car chaque point d'extrémité contient généralement trois tunnels d'entrée. Il peut y avoir plus ou moins de tunnels, selon le choix de l'expéditeur.Il peut même renoncer aux tunnels et s'adresser directement au nœud. Même si ce dernier ne sait pas qu'on y accède sans les tunnels et ne connaît pas la longueur totale de la chaîne, l'anonymat de l'expéditeur sera toujours affecté. Après tout, sans tunnel, il est toujours difficile mais possible d'intercepter la demande.De plus, chaque nœud de transit interroge périodiquement un floodfill aléatoire et reçoit une réponse de celui-ci à trois nouveaux nœuds de transit. De cette manière, le réseau s'agrandit et de nouveaux floodfills sont trouvés. Chaque nœud I2P actif possède en moyenne 5000 routeurs actifs dans sa base et reçoit des centaines, voire des milliers de connexions de transit totalement aléatoires.Cela permet à une grande partie du trafic de liaison secondaire de passer par les routeurs, créant ainsi un « bruit blanc ». Par conséquent, il est presque impossible de trouver une information spécifique parmi la multitude.

Et Invisible Internet Project (proxy I2P) utilise des identifiants, dérivés d'une clé de signature publique, en tant qu'adresses d'extrémité. La somme de hachage calcule une chaîne unique d'une certaine longueur et ajoute un pseudo-domaine «.b32.i2p» à la fin ; c'est ainsi que l'on obtient l'adresse intranet familière.


Le domaine lisible habituel est alors mis en correspondance avec l'adresse intranet.


Les tunnels forment un chemin à travers une liste sélectionnée de routeurs. Ils sont protégés par un cryptage multicouche, et chacun des routeurs sur le chemin ne peut décrypter qu'une seule couche. Les informations décryptées contiennent l'IP du routeur suivant et la couche suivante d'informations cryptées qui seront transmises au routeur suivant. 


Les informations transitant par les tunnels vont dans un seul sens et chaque tunnel a un point de départ et un point d'arrivée. Un autre tunnel est nécessaire pour récupérer le message.


Chaque tunnel existe pendant 10 minutes. Pour maintenir la connexion ouverte, les parties émettrices et réceptrices créent à l'avance de nouveaux tunnels et échangent leurs leasesets.

Les tunnels fonctionnent de la manière suivante : on construit d'abord un tunnel sortant, qui se compose de plusieurs nœuds. Chaque nœud décrypte un élément d'information qui contient des instructions. Ils indiquent à quel nœud il faut envoyer l'information suivante. 


Au dernier point du tunnel sortant, un nœud décrypte un élément d'information indiquant que la chaîne est complète.


Comme toutes les chaînes sont unidirectionnelles, le dernier nœud est informé de la route du tunnel entrant. En conséquence, l'information est renvoyée à l'utilisateur. 


Comment les tunnels d'entrée et de sortie fonctionnent dans I2P 





Selon le type de tunnel, entrant ou sortant, le dernier nœud est appelé Endpoint ou Gateway. Endpoint signifie le point final et Gateway signifie la porte d'entrée. La tâche du point de terminaison est de collecter des informations pièce par pièce dans un paquet de données plus volumineux et de l'envoyer via la passerelle à l'utilisateur souhaité.




Endpoint collecte les informations en un seul bloc et la passerelle les envoie à l'utilisateur final.


Par exemple, Bogdan envoie des données à Ibrahim. Bogdan construit un tunnel de sortie de 4 nœuds pour transmettre les données. Et Ibrahim construit un tunnel d'entrée avec 5 nœuds. Lorsque Bogdan envoie des informations, elles passent d'abord par le tunnel de sortie vers le point d'arrivée via ses 4 nœuds, puis de là, elles passent par la passerelle et traversent les 5 nœuds d'entrée d'Ibrahim. 


Si Ibrahim décide de répondre, un nouveau chemin sera construit. Et le nombre de nœuds dépendra des souhaits de Bogdan et Ibrahim.


Le réseau I2P lui-même fonctionne en utilisant le routage d'ail.


Comment fonctionne le routage de l'ail

Le routage de l'ail a été mis au point il y a environ 20 ans. Il s'agit d'une méthode de construction de tunnels pour transmettre des informations, dans laquelle plusieurs messages sont cryptés et assemblés en une seule demande.


Le Garlic Routing est appelé advanced onion routing et est utilisé par le réseau Tor. Il est utilisé lorsqu'il est nécessaire d'envoyer un message crypté à travers des nœuds de transit, en leur cachant le contenu.


La principale différence entre les deux méthodes de routage est que dans l'ail, plusieurs messages dans différents rouages peuvent être chiffrés simultanément, alors que dans la gousse et onion, un seul message peut être chiffré.




Pour en savoir plus sur le fonctionnement du cryptage en onion, consultez l'article « Qu'est-ce que le réseau Tor et comment il fonctionne ».


Et lorsqu'un message est transmis avec un routeur d'ail, il est crypté et décrypté dans la communication avec chaque nœud. Pendant la phase de création du chemin, seules les instructions de routage pour le prochain saut sont fournies à chaque nœud. 


Pendant le passage de la demande elle-même, le message est transmis par le tunnel et n'est disponible que pour son point d'arrivée.


L'ail en I2P darknet est un bloc d'information qui se compose de plusieurs rouages. Une partie est le message souhaité pour l'utilisateur, l'autre partie est un message de transit.


Par exemple, lorsqu'un utilisateur souhaite envoyer des informations à une autre personne, celles-ci sont enveloppées dans un rouage, qui est ensuite ajouté à d'autres blocs d'informations provenant d'autres participants du réseau, formant un ail. L'ail est crypté par des algorithmes spéciaux et transmis à différents nœuds du réseau.




Voici comment fonctionne le cryptage de l'ail, en utilisant la demande d'Amy comme exemple




Et voici à quoi ressemble la transmission d'une demande d'ail sur le côté de l'ordinateur qui a l'information désirée


Chaque ail comprend des informations sur le créateur de chaque gousse :


  • Le numéro de tunnel sur son routeur est une information aléatoire de 4 octets.


  • L'adresse du routeur suivant et le numéro du tunnel sur celui-ci.


  • La clé de chiffrement symétrique et la clé de chiffrement du vecteur d'initialisation. Le vecteur d'initialisation est une séquence aléatoire ou pseudo-aléatoire de caractères qui est ajoutée à la clé de chiffrement et en augmente la sécurité.


  • Rôle d'un nœud de la chaîne : transit ou destination.


Chaque rouage est identifié par les premiers octets d'information qu'il contient, qui font partie du hachage de son adresse. Lorsque le destinataire trouve le bon rouage, il décrypte son contenu avec une clé cryptographique. Les informations provenant d'autres dents ne peuvent pas être décryptées car elles sont destinées à d'autres destinataires et sont protégées par d'autres clés.


Lorsqu'il y a 4 participants à la construction du tunnel, un ail de 4 rouages est formé. Dans d'autres situations, l'ail se compose de 8 pièces et de 8 participants : le système ne permet pas à d'autres personnes de construire le tunnel. S'il y a des gousses vides dans l'ail, elles sont remplies d'informations aléatoires.


En résumé : comment une requête et un réseau interagissent-ils ?

Tout d'abord, un utilisateur crée une demande et des tunnels sont construits pour elle. La requête descend le tunnel d'entrée en passant par plusieurs points de transit et arrive aux points d'extrémité → demande des leasesets à des floodfills aléatoires. 


Les points de transit sont utilisés pour s'assurer que personne ne puisse retracer l'emplacement du point d'arrivée.


La demande adressée au point de terminaison est accompagnée des données du tunnel d'entrée. Ils sont nécessaires pour que la demande et la réponse puissent revenir à l'utilisateur.


Lorsqu'une demande arrive au serveur, celui-ci forme une réponse et l'envoie à l'utilisateur. Comme les tunnels I2P sont unidirectionnels, le serveur envoie la réponse par son tunnel de sortie. L'adresse du destinataire est le tunnel d'entrée qui a initialement envoyé la demande au serveur.


Voici à quoi cela ressemble dans le schéma général.




Cela s'est avéré difficile et déroutant, regardons tout étape par étape.




La première étape est que le serveur publie son leaseset sur le floodfill. Pour ce faire, il l'envoie via un tunnel sortant.


La deuxième étape : l'utilisateur veut se connecter à ce serveur. Pour ce faire, il envoie une requête à floodfill via son tunnel de sortie.


La troisième étape est que le floodfill envoie la réponse à l'ordinateur de la personne par le biais du tunnel entrant de l'utilisateur. 




La quatrième étape : l'utilisateur envoie la demande au serveur. La demande passe d'abord par le tunnel de sortie de l'utilisateur, puis par le tunnel d'entrée de l'utilisateur.




La cinquième étape : le serveur répond à l'utilisateur. Il envoie la réponse via le tunnel de sortie du serveur, qui passe ensuite dans le tunnel d'entrée de l'utilisateur et aboutit sur le PC de ce dernier. La personne ouvre alors la ressource souhaitée.


Par quels clients l'I2P fonctionne-t-il ?

Le réseau Invisible Internet Project repose sur deux technologies : Java et C++. Initialement, le projet a été créé en Java et s'est appelé I2P, et en 2013, un enthousiaste portant le surnom d'Original a créé le client I2P en C++ et l'a appelé I2Pd. Et il est bien meilleur que son prédécesseur. Nous allons vous expliquer pourquoi.


I2Pd est architecturalement supérieur à la version Java. Le problème est que l’I2P (I2P install) contient beaucoup de cryptographie, qui est très difficile à mettre en œuvre avec Java en raison de freins terribles. Ils ont essayé de résoudre ce problème et ont ajouté des bibliothèques, écrites en C, au routeur Java. Et chaque appel de ces bibliothèques représente une charge importante


Mais la cryptographie C++ est intégrée au network et fonctionne de manière native : elle ne charge pas le réseau.


Outre la mise en réseau rapide, les routeurs de l'I2Pd consomment moins de ressources système. Parce que le programme C++ communique directement avec le système. Dans la version Java, tout fonctionne à l'intérieur d'une machine virtuelle qui agit comme une couche entre le système d'exploitation et le logiciel. 


Un autre avantage de I2Pd est sa rapidité. En I2P normal, la connexion passe par plusieurs routeurs Java, la demande met donc plus de temps à être traitée et la vitesse de l'Internet ne dépasse pas quelques dizaines de kilobits. En C++, les demandes sont traitées plus rapidement, de sorte que la vitesse de connexion peut atteindre un mégabit.


Comment I2P diffère de Tor

Une des principales différences entre les deux réseaux : Tor est un network client, alors que I2P est un network serveur. Le point est que la tâche de Tor est de cacher l'adresse IP du client qui a fait la demande. Et la tâche de Invisible Internet Project (I2P usage) est de cacher le serveur auquel l'utilisateur fait la demande. Mais il y a aussi d'autres différences :


  1. Les tunnels dans Invisible Internet Project sont unidirectionnels, dans Tor ils vont dans les deux sens. En d'autres termes, dans l'I2P, le trafic passe par un tunnel jusqu'au destinataire, mais revient à l'expéditeur par un autre.


  1. Tor utilise le chiffrement en onion, tandis que I2P utilise le chiffrement à l'ail. Les deux types de cryptage sont puissants, mais le cryptage en onion protège le trafic couche par couche, tandis que le cryptage à l'ail le protège également bloc par bloc pour chaque destinataire. C'est-à-dire que le niveau final de protection dans le cryptage de l'ail est plus élevé.


  1. Dans l'I2P, personne ne sait qui est l'expéditeur et qui est le destinataire. Avec Tor, cependant, il y a un nœud intermédiaire qui sait d'où vient le fichier et où il doit être envoyé.


  1. Si Tor est interdit dans votre pays, il sera difficile de s'y connecter. Il ne sera pas en mesure de trouver les nœuds d'entrée pour construire le système et de déterminer à qui envoyer le message.


  1. Et dans Invisible Internet Project, même si un floodfill est banni, vous pouvez en créer un autre vous-même et obtenir ainsi une liste des points d'entrée du réseau. Vous n'aurez pas à configurer quoi que ce soit une seconde fois, les points d'entrée du système seront déjà connus et le logiciel les utilisera. Ainsi, I2P a une meilleure tolérance aux pannes que Tor. 


  1. Tor ne convient pas seulement pour accéder au dark web, mais aussi pour utiliser l'internet normal. Par exemple, vous pouvez utiliser Tor pour vous connecter aux réseaux sociaux habituels ou utiliser des services de streaming. L'I2P, quant à lui, ne sert qu'à la messagerie dans son propre système, bien que l'I2Pd possède presque toutes les caractéristiques de l'Internet ordinaire.


  1. I2P est à l'origine un projet opensource développé par des passionnés. Leur objectif est de créer un internet anonyme et sécurisé. Et le network Tor a été inventé par le gouvernement et peut maintenant identifier un utilisateur spécifique. 


  1. En 2016, par exemple, les États-Unis ont modifié la règle 41. Cela a donné au FBI le droit de pirater en masse n'importe quel nombre d'ordinateurs partout dans le monde en utilisant un seul mandat. Les forces de l'ordre auront donc le droit de pirater un nœud et de découvrir vos informations sensibles. Un tel cas s'est produit en 2016. A l'époque, le FBI a piraté 8000 ordinateurs dans 120 pays.


  1. Il s'avère que I2P est meilleur que Tor dans la mesure où le réseau est intrinsèquement construit pour suspecter tout le monde et ne faire confiance à personne. Et les actions de chacun restent cachées. Avec Tor, d'autre part, il est possible de désanonymiser un utilisateur et il y a eu des cas de ce genre.