Komitet IETF (Internet Engineering Task Force), zajmujący się rozwojem protokołów i architektury Internetu, rozpoczął proces standaryzacji systemu nazw domen GNS (GNU Name System), rozwijanego przez projekt jako całkowicie zdecentralizowany i odporny na cenzurę zamiennik DNS. Obecnie pierwsza robocza wersja standardu, po ustabilizowaniu której zostanie opracowany RFC z status „Proponowanego standardu”.
może być stosowany obok DNS i wykorzystywany w tradycyjnych aplikacjach, takich jak przeglądarki internetowe. Integralność i niezmienność rekordów zapewniana jest dzięki zastosowaniu mechanizmów kryptograficznych. W przeciwieństwie do DNS, w GNS zamiast hierarchii drzewiastej serwerów stosowany jest skierowany graf. Zamiana nazw jest zbliżona do DNS, ale zapytania i odpowiedzi są realizowane z zachowaniem poufności — węzeł przetwarzający zapytanie nie wie, komu przekazywana jest odpowiedź, a węzły tranzytowe oraz obserwatorzy zewnętrzni nie mogą odszyfrować zapytań i odpowiedzi.
Strefa DNS w GNS jest definiowana za pomocą pary kluczy publicznego i prywatnego opartej na krzywych eliptycznych . Wykorzystanie Curve25519 przez niektórych jako dość dziwny krok, ponieważ dla ECDSA stosuje się inne typy krzywych eliptycznych, a w parze z Curve25519 zazwyczaj wykorzystuje się algorytm podpisów cyfrowych , , bezpieczniejszy i szybszy niż ECDSA. Z punktu widzenia odporności na ataki, również budzi wątpliwości wybór rozmiaru klucza — 32 bajty zamiast 64 bajtów, które są zwykle stosowane dla Ed25519, a także zastosowanie szyfrowania symetrycznego, wykorzystując algorytmy AES i TwoFish w trybie CFB.
Takie podejście tłumaczy się koniecznością realizacji hierarchicznych kluczy, co umożliwia wykorzystanie głównego klucza publicznego do uzyskania podrzędnego klucza publicznego, korzystając z właściwości liniowości krzywej Curve25519. Ta cecha pozwala na uzyskiwanie podrzędnych kluczy publicznych bez znajomości zamkniętych kluczy głównych. Wskazana technika jest także w Bitcoinie. Rozmiar klucza wynoszący 32 bajty został wybrany, aby klucz mieścił się w jednym rekordzie DNS.
Dodatkowo można zaznaczyć frameworku , przeznaczone do budowy zabezpieczonych zdecentralizowanych sieci P2P. Sieci tworzone za pomocą GNUnet nie mają pojedynczego punktu awarii i są w stanie zagwarantować prywatność informacji użytkowników, w tym wyeliminować potencjalne nadużycia ze strony służb specjalnych i administratorów mających dostęp do węzłów sieci. Wydanie to zawiera znaczące zmiany w protokole, które łamią kompatybilność wstecz z wersjami 0.12.x.
GNUnet wspiera budowę sieci P2P na podstawie TCP, UDP, HTTP/HTTPS, Bluetooth i WLAN, może działać w trybie F2F (Friend-to-friend). Wspiera przechodzenie przez NAT, w tym z wykorzystaniem UPnP i ICMP. Do adresowania lokalizacji danych można wykorzystać rozproszoną tablicę haszującą (DHT). Dostarczane są narzędzia do wdrażania sieci mesh. Do selektywnego udostępniania i cofania praw dostępu stosuje się usługę zdecentralizowanej wymiany atrybutami identyfikacji , GNS (GNU Name System) oraz szyfrowania opartego na atrybutach ().
System charakteryzuje się niskim zużyciem zasobów i wykorzystaniem architektury wieloprocesowej w celu zapewnienia izolacji pomiędzy komponentami. Oferowane są elastyczne narzędzia do prowadzenia logów i gromadzenia statystyk. Do rozwoju końcowych aplikacji GNUnet dostarcza API dla języka C oraz wiązania dla innych języków programowania. W celu uproszczenia procesu rozwoju zaleca się użycie pętli zdarzeń (event loop) i procesów zamiast wątków. W skład projektu wchodzi biblioteka testowa do automatycznego wdrażania eksperymentalnych sieci obejmujących dziesiątki tysięcy peerów.
Oprócz GNS na bazie technologii GNUnet rozwijanych jest również kilka gotowych aplikacji:
- Usługa anonimowego wymieniania plików, która uniemożliwia analizę danych poprzez przesyłanie informacji wyłącznie w zaszyfrowanej formie i nie pozwala na śledzenie, kto umieścił, szukał i pobierał pliki, dzięki zastosowaniu protokołu GAP.
- System VPN do tworzenia ukrytych usług w domenie „.gnu” oraz przekazywania tuneli IPv4 i IPv6 przez sieć P2P. Dodatkowo wspierane są schematy translacji IPv4 na IPv6 i IPv6 na IPv4, a także tworzenie tuneli IPv4 na IPv6 i IPv6 na IPv4.
- Usługa GNUnet Conversation do prowadzenia rozmów głosowych przez GNUnet. Do identyfikacji użytkowników wykorzystywane jest GNS, a zawartość ruchu głosowego jest przesyłana w formie zaszyfrowanej. Anonimowość jest na razie nieosiągalna — inni użytkownicy mogą śledzić połączenie między dwoma użytkownikami i określić ich adresy IP.
- Platforma do budowy zdecentralizowanych sieci społecznościowych , korzystająca z protokołu i wspierająca rozpowszechnianie powiadomień w trybie multicast z zastosowaniem szyfrowania end-to-end, aby dostęp do wiadomości, plików, czatów i dyskusji mogli uzyskać tylko autoryzowani użytkownicy (ci, do których wiadomości nie są adresowane, w tym administratorzy węzłów, nie będą mogli ich przeczytać);
- System do organizacji zaszyfrowanej poczty elektronicznej , stosujący GNUnet do ochrony metadanych i wspierający różne do weryfikacji kluczy;
- System płatniczy , zapewniający anonimowość dla kupujących, ale śledzący transakcje sprzedawców w celu zapewnienia przejrzystości i dostarczenia raportów podatkowych. Obsługiwane są różne istniejące waluty oraz pieniądze elektroniczne, w tym dolary, euro i bitcoiny.
Główne nowości GNUnet 0.13:
- Uruchomiono rejestr (GNUnet Assigned Numbers Authority), odpowiedzialny za przydzielanie nazw i adresów dla GNUnet.
- Realizacja zdecentralizowanego systemu nazw domen GNS została dostosowana do , zaproponowanej w IETF. Uruchomiono wtyczkę NSS „block”. Dodano nowe flagi SUPPLEMENTAL dla rekordów, które wyraźnie nie są publikowane pod określoną etykietą, ale są zwracane przez resolver. Do narzędzia gnunet-namestore dodano wyjście ostrzeżenia przy dodawaniu rekordów TLSA lub SRV poza rekordem .
- W mechanizmie unieważniania kluczy (GNS/REVOCATION) funkcja została przeniesiona na wykorzystanie algorytmu haszującego Argon2.
- W serwisie zdecentralizowanej wymiany atrybutów identyfikacji (RECLAIM) rozmiar biletu zwiększono do 256 bitów.
- Wtyczka transportowa wykorzystująca dla transmisji danych protokół UDP została przeniesiona do kategorii eksperymentalnej z powodu problemów ze stabilnością;
- Format pliku kluczy i metoda serializacji kluczy prywatnych ECDSA zostały zunifikowane z innymi bibliotekami (stare klucze przestaną działać).
- Jako realizacja algorytmów szyfrowania opartych na krzywych eliptycznych wykorzystano bibliotekę .
- Dodano możliwość budowy narzędzi z biblioteką cURL, niezwiązaną z gnutls.
- Przywrócono serwer ciągłej integracji. .
- Do zależności budowlanych dodano biblioteki libmicrohttpd, libjansson i libsodium.
Źródło: opennet.ru
