I2P

I2P - sieć anonimowa Opis obrazu I2PAndroid-console-0.9.20.png. Informacja
Pierwsza wersja 2003
Ostatnia wersja 0,9,45 (25 lutego 2020 r)
Kaucja github.com/i2p/i2p.i2p , [cvs: //cvs.i2p.net/cvsroot/ cvs: //cvs.i2p.net/cvsroot] i [cvs: //cvs.invisiblenet.net: / cvsroot / freeweb cvs: //cvs.invisiblenet.net: / cvsroot / freeweb]
Zapewnienie jakości Ciągła integracja
Stan projektu Aktywny
Napisane w Jawa
System operacyjny Microsoft Windows , Linux , macOS , OpenBSD , FreeBSD i Android
Środowisko niezależny
Języki Francuski, angielski, hiszpański i wiele innych
Rodzaj Klient P2P
Polityka dystrybucji Wolny
Licencja Licencja BSD , Powszechna Licencja Publiczna GNU , Licencja MIT i udostępnione do domeny publicznej przez właściciela praw autorskich ( d )
Stronie internetowej geti2p.net

I2P („  Invisible Internet Project  ”) to anonimowa sieć , zapewniająca prostą warstwę sieciową typu programowej nakładki sieciowej , za pomocą której aplikacje mogą przesyłać do siebie informacje anonimowo i bezpiecznie. Komunikacja jest szyfrowana od końca do końca .

W sumie do wysyłania wiadomości używane są cztery warstwy szyfrowania . Anonimowość zapewnia koncepcja „  mieszanej sieci  ”, która polega na usuwaniu bezpośrednich połączeń pomiędzy rówieśnikami, którzy chcą wymieniać informacje. Zamiast tego ruch przechodzi przez szereg innych rówieśników, tak że obserwator nie może określić, kto jest pierwotnym nadawcą, a kto ostatecznym odbiorcą informacji. Każdy partner może w swojej obronie powiedzieć, że dane nie były dla niego przeznaczone.

W Internecie odbiorca jest identyfikowany za pomocą adresu IP i portu . Ten adres IP odpowiada fizycznemu interfejsowi ( modem lub router , serwer itp.). Ale w I2P identyfikujemy odbiorcę za pomocą klucza kryptograficznego .

W przeciwieństwie do adresowania IP nie można wskazać komputera będącego właścicielem tego klucza. Ponieważ klucz jest publiczny , związek między kluczem a interfejsem, który jest jego właścicielem, nie jest ujawniany.

Koncepcja techniczna

„Miejsca docelowe” (przykłady: serwer WWW, IRC, gra  itp. ) To identyfikatory kryptograficzne (a nie adresy IP) zdefiniowane przez parę asymetrycznych kluczy (klucz prywatny / klucz publiczny). Miejsce docelowe jest określane przez identyfikator hosta i numer portu do przyłączenia. To może być POP server , SMTP server , IRC serwer , wykorzystując web serwer , SVN serwera , A dyskusyjna serwera ,  itd.

Do routera konstrukcje tuneli do przeprowadzenia przychodzące i wychodzące wiadomości. Aby utworzyć tunel, router prosi jednego z peerów, do którego jest podłączony, o utworzenie tego tunelu. Ten peer z kolei skontaktuje się z innym peerem, prosząc go, aby był następnym ogniwem w łańcuchu peerów tworzących tunel. Aby dotrzeć do kryptograficznego celu - a więc do peera - trzeba wiedzieć, które wyjście z tunelu zaadresować, aby rozwiązać ten problem, do sieci dodano określoną klasę routerów. To są „  Floodfill  ”. Utrzymują one listę połączeń między tunelami a miejscami docelowymi. W ten sposób, gdy router chce dotrzeć do celu, pyta Floodfill, do którego tunelu powinien się udać, aby skontaktować się z tym miejscem docelowym. Dlatego liczba routerów Floodfill będzie rosła wraz z rozwojem sieci. Wszystko odbywa się automatycznie, jeśli sieć potrzebuje nowych Floodfillów , routery spełniające warunki szybkości, stabilności i liczby połączeń automatycznie staną się takimi.

Wszystkie routery w sieci uczestniczą w transporcie wiadomości innych routerów, a tym samym umożliwiają nierozróżnialność generowanego ruchu przez utopienie go w ciągłym przepływie sieci. Dla atakującego jest bardzo skomplikowane ustalenie, czy dane były naprawdę przeznaczone dla Ciebie, czy tylko przez Ciebie przechodziły.

Płuco I2P to I2PTunnel , zarządza wchodzącymi i wychodzącymi tunelami. W szczególności możesz stworzyć własny tunel HTTP, który będzie wskazywał na port 80 twojego komputera, aby hostować twoją własną eepsite, a drugi na twój serwer Jabber lub POP3 .

Aplikacje

Podobnie jak w przypadku sieci VPN lub ciemnych sieci , I2P wykorzystuje tunelowanie, aby zapewnić „sieć w sieci”. W przeciwieństwie do większości oprogramowania do udostępniania plików w trybie peer to peer do anonimowego p2p , I2P koncentruje się na autonomicznym zarządzaniu siecią i zapewnieniu anonimowej warstwy transportowej . Gdy stosowany samodzielnie, I2P nie świadczy usług, które można znaleźć w Internecie ( e-mail , pobieranie , internetowej ,  itd. ). Jednak I2P zawiera kilka aplikacji do wyszukiwania niektórych typowych usług przy zachowaniu poufności i anonimizacji oferowanych przez sieć.

Rozwój aplikacji wykorzystujących sieć jest więc możliwy bez konieczności modyfikowania projektu I2P. W ten sposób możemy zobaczyć aplikacje korzystające z sieci I2P, które używają tych samych protokołów, co to, co znajdujemy w Internecie (np .: iMule ).

IRC

I2P pierwotnie zawiera anonimową sieć IRC : można się z nią połączyć za pomocą oprogramowania klienta IRC (nie ma znaczenia, które) wskazując na adres serwera 127.0.0.1 i port 6668.

Przykłady najczęściej uczęszczanych kanałów: # i2p-fr , # i2p-help , # i2p , #anonops ( anonimowe ).

Oryginał dostarczony

Opcjonalny

Udostępnianie plików na żywo

Dla programistów

Zapewniono również interfejs API , aby ułatwić tworzenie oprogramowania, takiego jak nowe aplikacje oparte na I2P ( SDK , router itp.).

Tunel I2PTunnel

Komunikacja pośrednia

Korespondenci nie ujawniają się bezpośrednio. Każdy z nich używa szeregu routerów I2P jako pośredników do tworzenia tunelu I2PT. Te tunele są jednokierunkowe i służą do maskowania zarówno odbiorcy, jak i nadawcy. Możemy zatem wyróżnić dwie kategorie I2PTunnel:

Aby skontaktować się z członkiem sieci, konieczne jest wyszukanie routerów I2P, które odpowiadają wpisom tuneli udostępnionych przez odbiorcę. To wyszukiwanie odbywa się za pomocą sieciowej bazy danych .

Anonimowość w ramach pośrednictwa

Szyfrowania , zwany ząbek czosnku, aby zaznaczyć swoją odmienność od Tora szyfrowania cebuli , jest stosowana na wiadomości przechodzących przez I2PTunnels. To szyfrowanie zapewnia:

  1. poufność wiadomości
  2. i że pośrednicy mogą znać tylko routery poprzedzające tunel i za nim .

Punkt 1 zapobiega wykorzystywaniu informacji zawartych w wiadomości do identyfikacji korespondentów. Punkt 2 uniemożliwia pośrednikom poznanie ich pozycji w tunelu, a tym samym uniemożliwia tym pośrednikom rozróżnienie między korespondentami a pośrednikami.

Rozmiar tunelu i jakość anonimowości

Rozmiar tuneli I2PT jest wybierany przez tego, kto je tworzy. Ma to znaczący wpływ na wszystkie mechanizmy chroniące anonimowość.

Tunel bez pośrednika oferuje ochronę, ponieważ nie jest możliwe odróżnienie korespondentów i pośredników z wewnątrz sieci; wiarygodne zaprzeczenie chroni je. Jednak osoba atakująca poza siecią i dysponująca zasobami do nadzorowania ruchu w takim tunelu może przeprowadzić atak na podstawie analizy statystycznej.

Gdy interweniują pośrednicy, wszyscy pośrednicy muszą zostać narażeni na atak przed rozpoczęciem ataku za pomocą analizy statystycznej. Mechanizm mieszania ruchu rozwiązuje ten problem.

Ograniczenia i ograniczenia tunelu I2PTunnel

Jeśli I2PTunnel jest stosunkowo skuteczny w zachowaniu anonimowości w sieci, sam nie jest już wystarczający dla tych, którzy mogą mieć globalny obraz sieci I2P. Wystarczy obserwować ruch, żeby zobaczyć, gdzie się zaczyna, a gdzie kończy.

Tunel , I2P i inne, powodują ograniczenie prędkości oraz wzrost opóźnienia . Zwielokrotnienie tuneli umożliwia zwiększenie wykorzystania niewykorzystanego przepływu.

Tworzenie tunelu

Aby się komunikować, korespondent musi stworzyć tunel bez konieczności odbierania swojej anonimowości (aby przekazać swoją wiadomość przez rówieśników). Twórca tunelu musi najpierw wybrać użytkowników, którzy będą potencjalnie uczestniczyć w jego tunelu. Następnie tworzy żądanie żądania (TunnelBuildMessage), które przejdzie przez wybrane peery przed powrotem do twórcy z odpowiedziami każdego z nich.

Wybór rówieśników

Wybór rówieśników odbywa się na podstawie określonych kryteriów. Kryteria te obejmują między innymi ich czasy odpowiedzi i przepustowości. Wyboru dokonuje się na podstawie wydajności, niezawodności lub stopnia anonimowości, o jaki marzył użytkownik.

Tworzenie wiadomości TunnelBuildMessage

TunnelBuildMessage jest wiadomość zbudowany przez tunel twórcy . Będzie on używany do wylistowania odpowiedzi rówieśników zgadzających się na udział lub nie w tunelu. Jeśli wszystkie odpowiedzi są pozytywne, tworzony jest tunel. Ta wiadomość składa się z ośmiu wykresówek. Formularz rejestracyjny zawiera prośbę o udział partnera. Dlatego tunel może mieć maksymalnie osiem węzłów.

bytes 0-3: tunnel ID to receive messages as bytes 4-35: local router identity hash bytes 36-39: next tunnel ID bytes 40-71: next router identity hash bytes 72-103: AES-256 tunnel layer key bytes 104-135: AES-256 tunnel IV key bytes 136-167: AES-256 reply key bytes 168-183: reply IV byte 184: flags bytes 185-188: request time (in hours since the epoch) bytes 189-192: next message ID bytes 193-222: uninterpreted / random padding

Opis formularza rejestracyjnego

Klucz warstwy tunelu AES-256 i klucz tunelu IV AES -256  : klucze szyfrowania, które będą używane podczas transakcji w tunelu, jeśli zostanie zbudowany.

AES-256 odpowiedź IV i klucz odpowiedzi AES-256  : klucz szyfrowania odpowiedzi i jego wektor inicjalizacji , umożliwia to partnerowi zaszyfrowanie odpowiedzi przed przesłaniem wiadomości.

identyfikator następnej wiadomości  : następny peer w tunelu . Ten, do którego należy wysłać wiadomość po udzieleniu odpowiedzi.

Pozostałe opcje umożliwiają sprawdzenie integralności wiadomości, ale także dodanie dodatkowych informacji do odpowiedzi.

Przygotowuję do wysłania

Przed wysłaniem TunnelBuildMessage twórca tunelu szyfruje tę wiadomość na dwa kolejne sposoby. Przez szyfrowanie asymetryczne, które pozwala zachować poufność informacji w sieci, a następnie przez szyfrowanie symetryczne, które zapewnia, że ​​wiadomość przeszła w kolejności ustalonej przez twórcę:

Szyfrowanie asymetryczne  : każdy formularz rejestracyjny jest szyfrowany kluczem publicznym odpowiedniego peera, tak że każdy peer ma dostęp tylko do swojego formularza rejestracyjnego.

Szyfrowanie symetryczne  : wiadomość jest następnie szyfrowana kilkoma warstwami, aby udostępnić plik tylko w odpowiednim czasie. Szyfrowanie odbywa się w taki sposób, że gdy peer szyfruje wiadomości z odpowiedzi, wtedy karta rejestracyjna kolejnego uczestnika można odszyfrować przez nią. Możesz myśleć o tym jak o cebuli, z której warstwa jest usuwana przy każdej transmisji z jednej do drugiej. Na przykład tunel z trzema węzłami równorzędnymi A, B i C:

Zapis ostatniego uczestnika tunelu (C) jest szyfrowany kluczem odpowiedzi od przedostatniego (B) w taki sposób, że gdy B szyfruje swoją odpowiedź, wówczas zapis C może być odszyfrowany przez C. B i C są zaszyfrowane kluczem A, więc B można odczytać tylko po A.

Przetwarzanie przez rówieśników TunnelBuildMessage Odzyskiwanie plików

Kiedy peer odbiera TunnelBuildMessage , istnieje tylko jedna karta rekordu, która nie jest zaszyfrowana symetrycznie. Odszyfrowuje ten plik swoim kluczem prywatnym, aby pobrać prośbę o uczestnictwo w tunelu .

Wybór udziału

Kiedy plik jest odszyfrowany, zastępuje zawartość pliku swoją odpowiedzią, uczestnicząc w tunelu lub nie. Jeśli odmówi, podaje powód odrzucenia.

Szyfrowanie wiadomości

Po utworzeniu i zapisaniu odpowiedzi w formularzu rejestracyjnym, formularz rejestracyjny zostaje zaszyfrowany symetrycznie kluczem podanym we wniosku. Następnie szyfruje pozostałe karty rekordów. Szyfrowanie innych plików skutkuje usunięciem symetrycznej warstwy szyfrowania , więc plik następnego odbiorcy nie ma już szyfrowania symetrycznego. Odbiorca jest gotowy do odszyfrowania.

Przejdź do następnego

Ostatnią operacją wykonywaną przez peera podczas tworzenia tunelu jest przekazanie TunnelBuildMessage do następnego odbiorcy. Kolejny odbiorca jest wskazywany w formularzu rejestracyjnym podczas składania wniosku.

Ostatnim peerem uczestniczącym w tworzeniu tunelu jest twórca tunelu. Odszyfrowuje formularze w kolejności odwrotnej do szyfrowania symetrycznego wykonywanego podczas tworzenia TunnelBuildMessage , aby pobrać odpowiedzi.

Mechanizm routingu

I2P reaguje na problem routingu , starając się nie narażać anonimowości, jakości sieci (opóźnienia i przepustowości) i ataków typu „odmowa” na całą sieć.

NetdB

Koncepcja jest prosta, ale ważna, NetdB (dla sieciowej bazy danych ) to baza danych zawierająca identyfikatory routerów w sieci . Ta baza danych jest rozproszona i jest podobna do tabeli routingu w konwencjonalnym routerze (z wyjątkiem tego, że zawiera klucze identyfikacyjne routerów I2P). Użyła DHT od Kademlia w bazie jako rozwiązania awaryjnego, ale zostało to porzucone.

Routery Floodfill

Do współdzielenia metadanych z sieci jest inicjowane peer floodfill (niewielka liczba routerów I2P używa tego algorytmu, inne używają pochodnej Kademlia, ale która nie jest już używana). Gdy peer typu floodfill wprowadza nowy klucz szyfrowania do sieciowej bazy danych , inny losowo wybrany peer typu floodfill ponownie żąda tego klucza, a następnie, jeśli jest prawidłowy, zbliża się do pierwszego i ponownie publikuje klucz. Pod koniec procesu zalewania węzłów równorzędnych udostępniają swój klucz, nieustannie odpytując bazę danych i wykonując kopię prawidłowych kluczy w swojej pamięci lokalnej, co powoduje zmianę bliskości rówieśników podczas zalewania (peery podchodzą bliżej). Wszystkie dane przechowywane w bazie są samouwierzytelniające się poprzez weryfikację podpisu przechowywanego elementu. Dane są weryfikowane za pomocą znacznika czasu , routery regularnie sprawdzają czas, wysyłając zapytania do serwera SNTP (pool.ntp.org) i wykrywając niespójności w warstwie transportowej (aby uniknąć ataków). Mówiąc prościej, routery Floodfill zapewniają dopasowanie kluczy, routing informacji i transport danych w sieci (od 3 do 5 routerów Floodfill teoretycznie zapewnia prawidłowe działanie zestawu 10 000 routerów w sieci). Zastosowany algorytm nie jest kompletnym algorytmem, ale został dostosowany do potrzeb I2P bez obciążania implementacji .

Opuszczenie Kademlii

Algorytmy Kademlia zostały wykorzystane do wymiany metadanych między routerami . Z tego rozwiązania zrezygnowano , Ze względu na trudności w ustawieniu algorytmu. Algorytm wymagał minimum zasobów (komputera i procesora ), których routery nie mogły założyć (dobry pomysł na papierze, ale nie w tej aplikacji).

Informacje o routerach

Routera informacje tylko sklepy, które jest niezbędne do wysyłania wiadomości przez sieć . Są to jego tożsamość ( 2048-bitowy publiczny klucz ElGamala , publiczny klucz DSA , a następnie certyfikat ) i adresy (lista adresów IP , portów i zestawów opcji publikowania). Kluczem do tej struktury jest SHA256 tożsamości routerów. Dopóki wersja I2P nie jest w wersji 1.0, opcje publikacji dotyczą danych debugowania .

Wyszukiwanie w sieci konkretnego routera

W takim systemie rozproszonym poszukiwanie informacji może wyglądać jak wyszukiwanie w tradycyjnym DHT (takim jak ten przeprowadzany w sieciach w P2P ). Ale biorąc pod uwagę, że sieć jest niestabilna i stale ewoluuje (biorąc pod uwagę 10-minutowy okres ważności tuneli ), iteracyjne wyszukiwanie jest ułatwione dzięki temu, że informacje nie znajdują się na najbliższym routerze, ale na routerach. Posiadających klucz identyfikacyjny blisko SHA 256 (tożsamość routera + znacznik czasu w formacie YYYYMMDD), co umożliwia posiadanie zestawu routerów posiadających żądane informacje. Pozwala to również na odnowienie miejsca informacji w sieci i zabezpieczenie przed atakami (ponieważ w przypadku ataku na maszynę z tą zasadą lokalizacja informacji zmienia się każdego dnia, zmuszając atakującego do każdorazowego odtworzenia ataku). Ponieważ dane badawcze są wrażliwe, przechodzą przez tunele eksploracyjne, które różnią się od tuneli danych.

Zanurzenie ładunku

Zanurzenie ładunku umożliwia ukrycie danych faktycznie wysłanych lub odebranych przez użytkownika routera I2P. Zanurzenie jest bardzo ważne, ponieważ chroni anonimowość przed atakującym z zewnątrz, który ma przegląd sieci.

Ataki z routera sieciowego

W swoim projekcie programiści uwzględniają ataki i wymieniają je, aby zapewnić ochronę użytkowników i sieci (aby uniknąć np. Przeciążenia routerów typu floodfill ).

Uwagi i odniesienia

  1. „  https://staas.home.xs4all.nl/t/swtr/documents/wt2015_i2p.pdf  ”
  2. „  Porównanie anonimowych sieci  ” (dostęp: 20 grudnia 2009 )
  3. http://i2pbote.i2p.us
  4. http://wiki.vuze.com/w/I2P_HowTo
  5. (in) I2P Team, „  How Tunnel Routing Works  ” (dostęp 18 grudnia 2009 )
  6. „  TOR, THE ENCRYPTED FACE OF THE INTERNET - CAMILLE BOSQUÉ  ” , na www.camillebosque.com (dostęp 10 kwietnia 2016 )
  7. (w) I2P zespołu "  I2P za Threat model - poprzednik ataki  " (dostęp 18 grudnia 2009 )
  8. (w) Matthew K. Wright , Micah Adler , Brian Neil Levine and Clay Shields , Passive-Logging Attacks Against Anonymous Communications Systems ,czerwiec 2007, 34  s. ( czytaj online )
  9. „  Wdrożenie tunelu  ”

Załączniki

Powiązane artykuły

  • Fill Flood (w języku angielskim: flood fill ) terminu, który inspiruje I2P aby zakwalifikować niektóre węzły
  • Anonimowe P2P (zawiera listę oprogramowania)
  • Freenet  : sieć uzupełniająca.
  • GNUnet  : anonimowa sieć P2P i F2F z możliwością udostępniania plików. Oprogramowanie wielofunkcyjne i wieloplatformowe. (Projekt GNU , napisany w C).

Linki zewnętrzne