I2P

otwarty projekt anonimowej sieci komputerowej

I2P (ang. Invisible Internet Project) – sieć peer-to-peer z komutacją pakietów, szyfrowaniem transmisji oraz w pełni rozproszoną organizacją. Sieć ta powstała z modyfikacji sieci Freenet zapoczątkowanych w lutym 2003.

I2P – Projekt Niewidzialny Internet
logo
ilustracja
Autor Zespół I2P[1]
Pierwsze wydanie 2003
Aktualna wersja stabilna 2.5.0
(8 kwietnia 2024) [±]
Język programowania Java, C++
Platforma sprzętowa wirtualna maszyna Javy, Android
System operacyjny Microsoft Windows, Linux, macOS, OpenBSD, FreeBSD, Android
Rodzaj anonimowa sieć P2P
sieć nakładkowa
Licencja licencje BSD, GNU General Public License, Licencja MIT, przeniesione do domeny publicznej przez właściciela praw autorskich
Strona internetowa

Działanie sieci edytuj

Budowa sieci edytuj

Brak centralnego węzła sieci zmniejsza jej podatność na awarie oraz ataki. Szyfrowanie przesyłanych paczek danych przez każdy z węzłów pośredniczących w transmisji znacznie utrudnia ustalenie prawdziwych adresów IP węzła źródłowego i docelowego oraz praktycznie uniemożliwia odczytanie właściwej informacji.

Mechanizm transmisji edytuj

Transmisja odbywa się poprzez jednokierunkowe tunele o krótkim czasie życia:

  • tunele odbiorcze, gdzie cały ruch odbywa się w kierunku od sieci do węzła, który utworzył tunel
  • tunele nadawcze, obsługujące ruch wychodzący od twórcy tunelu do sieci.

Jednokierunkowość tuneli bardzo upraszcza wyszukiwanie dróg dostępu do innych węzłów sieci oraz utrudnia analizę ruchu przez osoby postronne.

Przesyłane paczki noszą nazwę wiadomości. W celu wysłania wiadomości do wybranego węzła sieci I2P, węzeł nadawczy odpytuje rozproszoną bazę połączeń (netDb) o identyfikator bramy, poprzez którą można się skomunikować z węzłem docelowym. Następnie wiadomość zostaje wpuszczona do odpowiedniego tunelu nadawczego, z poleceniem przekazania jej do jednego z tuneli odbiorczych węzła docelowego.

Wiadomości mogą być grupowane i zamykane w strukturze zwanej obrazowo główką czosnku (ang. garlic). Oprócz wiadomości (ząbków czosnku), główka zawiera informacje o tunelu nadawczym, przez który wysyłana jest paczka. Przyspiesza to znacznie ustalanie trasy, którą może być przesyłana wiadomość zwrotna od węzła docelowego.

Baza połączeń (netDb) edytuj

Każdy węzeł przechowuje i na bieżąco uaktualnia swoją część rozproszonej bazy połączeń (netDb), w skład której wchodzą:

  • routerInfo – etykieta danego węzła w sieci I2P
    • unikatowy identyfikator (klucz kryptograficzny)
    • adres IP i numer portu TCP, poprzez który odbywa się komunikacja z węzłem I2P
    • data i czas publikacji etykiety
    • nieokreślone opcje, do wykorzystania przez użytkownika
    • sygnatura kryptograficzna powyższych informacji
  • leaseSet – lista otwartych tuneli (odbiorczych oraz nadawczych), każdy z nich opisany przez
    • czas wygasania dzierżawy
    • identyfikator tunelu (4-bajtowa liczba)
    • kryptograficzny identyfikator bramy (pierwszego węzła w tunelu).

Baza netDb służy do ustalania optymalnych ścieżek dostępu do innych węzłów sieci I2P. Idea została oparta na algorytmach trasowania sieci Kademlia.

Szyfrowanie transmisji edytuj

Dane przesyłane przez sieć I2P podlegają szyfrowaniu na czterech warstwach:

  • warstwa wiadomości (danych użytkownika, przesyłanych od węzła źródłowego do docelowego)
  • warstwa obejmująca całą „główkę czosnku”, tzn. zbiór wiadomości w połączeniu z informacjami pomocnymi w wyszukiwaniu trasy
  • warstwa transportowa wewnątrz tunelu (między bramą z punktem końcowym tunelu)
  • warstwa transportowa między bramami różnych tuneli

Oferowane usługi edytuj

Wewnątrz sieci I2P możliwa jest implementacja oraz korzystanie z usług o funkcjonalności identycznej z ich odpowiednikami w sieci Internet. W szczególności są to:

  • serwery HTTP (umożliwiające publikację stron, tzw. eepsites)
  • serwery IRC
  • serwery Telnet/SSH
  • mechanizmy wymiany plików
  • anonimowe serwery proxy dla WWW spoza sieci I2P
  • anonimowe serwery SMTP/POP3

Stosowane pojęcia edytuj

Użytkownicy I2P mogą zobaczyć na oficjalnej stronie I2P oraz konsoli routera następujące:

Eepsite edytuj

Eepsite to strona internetowa zamieszczona anonimowo w sieci I2P. Nazwa takiej strony kończy się pseudodomeną.i2p, jak na przykład ugha.i2p czy orion.i2p. EepProxy potrafi odnaleźć te strony dzięki identyfikującym je kluczom kryptograficznym przechowywanym w pliku host.txt. Zazwyczaj I2P jest konieczne by dostać się na te strony.

EepProxy edytuj

Program EepProxy utrzymuje całą komunikację pomiędzy przeglądarką internetową a dowolną eepsite. Funkcjonuje to podobnie do serwera proxy, który może być używany w każdej przeglądarce internetowej.

.i2p jest pseudodomeną najwyższego poziomu, która działa tylko w sieci I2P. Nazwy.i2p są rozpoznawane przez przeglądarki poprzez wysyłanie zapytań do EepProxy, który zastąpi nazwę kluczem publicznym peera i ustanowi połączenie poprzez sieć I2P, przy czym żadna z tych operacji nie zostanie zauważona przez przeglądarkę.

Peer edytuj

Peer to każdy komputer połączony do sieci I2P. Każda taka maszyna współdzieli trasowanie oraz przekazuje zaszyfrowane pakiety dalej.

Tunnel edytuj

Raz na 10 minut zostaje ustanowione połączenie pomiędzy dwoma komputerami. Dane z oraz do konkretnego peera wraz z danymi dla innych użytkowników przechodzą przez kolejne tunele i są przekazywane dalej, by w końcu osiągnąć cel ostateczny.

Przypisy edytuj

Linki zewnętrzne edytuj