I2P
Logo programu | |
Autor | I2P Team |
---|---|
Pierwsze wydanie | 2003 |
Aktualna wersja stabilna | 0.9.17 |
Język programowania | Java; C |
System operacyjny | Wieloplatformowy |
Licencja | MIT |
Strona internetowa |
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.
Działanie sieci
Budowa sieci
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
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)
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
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
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. epsites)
- serwery IRC
- serwery Telnet/SSH
- mechanizmy wymiany plików
- anonimowe serwery proxy dla WWW spoza sieci I2P
- anonimowe serwery SMTP/POP3
Stosowane pojęcia
Użytkownicy I2P mogą zobaczyć na oficjalnej stronie I2P oraz konsoli routera następujące:
Eepsite
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
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
Peer to każdy komputer połączony do sieci I2P. Każda taka maszyna współdzieli trasowanie oraz przekazuje zaszyfrowane pakiety dalej.
Tunnel
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.