I2P
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.
| Autor | Zespół I2P[1] |
|---|---|
| Pierwsze wydanie | 2003 |
| Aktualna wersja stabilna | 2.11.0 (9 lutego 2026) [±] |
| 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
edytujBudowa sieci
edytujBrak 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
edytujTransmisja 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)
edytujKaż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
edytujDane 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
edytujWewną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:
Stosowane pojęcia
edytujUżytkownicy I2P mogą zobaczyć na oficjalnej stronie I2P oraz konsoli routera następujące:
Eepsite
edytujEepsite 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
edytujProgram 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
edytujPeer to każdy komputer połączony do sieci I2P. Każda taka maszyna współdzieli trasowanie oraz przekazuje zaszyfrowane pakiety dalej.
Tunnel
edytujRaz 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
edytujLinki zewnętrzne
edytuj- Koncepcja „garlic routing” (plik postscript)
- Strona projektu i2p
- translate I2P. transifex.net. [zarchiwizowane z tego adresu (2011-05-29)].