Кіріспе

GNU жобасының бір бөлігі болып табылатын орталықсыздандырылған, теңдес желілерге арналған негізгі құрал GNUnet – орталықсыздандырылған, теңдес желілер үшін бағдарламалық қондырғы және ресми GNU пакеті. Бұл құрал сілтемелерді шифрлауды, теңдестерді табуды, ресурстарды бөлуді, TCP, UDP, HTTP, HTTPS, WLAN және Bluetooth сияқты түрлі арналар арқылы байланыс жасауды, сондай-ақ маршруттау, көптеп тарату және желінің мөлшерін бағалауға арналған әртүрлі негізгі теңдес желілік алгоритмдерді ұсынады. GNUnet-тің негізгі желілік топологиясы – торлы желі. GNUnet құрамына Kademlia-ның кездейсоқ түрі болып табылатын, кішкентай әлем желілерінде тиімді маршруттауды қамтамасыз ететін үлестірілген хэш-кесте (DHT) кіреді. GNUnet пайдаланушылардың тек сенімді достарымен ғана байланысуын шектеу үшін "F2F топологиясы" опциясын ұсынады. Пайдаланушылардың достарының достары (және т.б.) пайдаланушының компьютерінің IP-мекенжайын тікелей пайдаланбай, файлдармен жанама түрде алмаса алады. GNUnet бірыңғай ресурстарды сәйкестендіруді (URI) қолданады (IANA бекітпеген, бірақ өтінім берілген). GNUnet URI екі негізгі бөліктен тұрады: модуль және модульге тән сәйкестендіргіш. GNUnet URI gnunet://module/identifier нысанында болады, мұнда модуль – модуль атауы, ал сәйкестендіргіш – модульге тән жол. Басты код C тілінде жазылған, бірақ басқа тілдерде API жасау үшін байланыстар бар, осы тілдерде кеңейтімдерді әзірлеуге мүмкіндік береді. GNUnet – GNU жобасының бір бөлігі. PRISM ақпараттары жарияланғаннан кейін хакерлер қауымдастығында қызығушылық оянды. GNUnet бірнеше кіші жүйеден тұрады, олардың ең маңыздылары – Транспорт және Негізгі кіші жүйелер. Транспорт кіші жүйесі қауіпсіз емес байланыс қабатын қамтамасыз етеді, ал Негізгі кіші жүйе теңдестерді табу және шифрлауды қамтамасыз етеді. Негізгі кіші жүйеге әртүрлі қосымшалар орнатылады. GNUnet фреймворкінің негізгі таралымында файлдармен ортақтасу, чат және VPN сияқты әртүрлі P2P қосымшалары бар; сонымен қатар, бірнеше сыртқы жобалар (мысалы, secushare) GNUnet инфрақұрылымын кеңейтеді. GNUnet Gnutella P2P протоколымен байланысты емес. Gnutella ресми GNU жобасы емес, ал GNUnet – ресми жоба.

Көлік

Бастапқыда GNUnet негізгі тасымалдау үшін UDP пайдаланды. Қазір GNUnet тасымалдау жүйесі TCP және SMTP сияқты бірнеше нұсқаны ұсынады. IANA-да ресми тіркелген байланыс порты – 2086 (tcp + udp).

Сенімгерлік жүйесі

GNUnet артықшылыққа негізделген экономикалық модельге негізделген сенім жүйесін ұсынады. Экономикалық жүйені қолдану идеясы MojoNation желісінен алынған. GNUnet желісінде сенімді тұлғалар жоқ, сондықтан жаһандық беделді сақтау мүмкін емес. Оның орнына, әрбір қатысушы өзінің жергілікті байланыстарының әрқайсысына жеке сенімділік деңгейін сақтайды. Егер жол ені және процессор уақыты сияқты ресурстар жеткілікті болса, қатысушы оларды сенімділігін төмендетпей немесе қосымша төлем алмастан барлық сұраған көршілеріне ұсынады. Егер түйінге жүктеме артса, ол ішкі сенімділік деңгейі төмен көрші түйіндерден келетін сұраныстарды қабылдамайды. Бірақ, егер қатысушыда барлық сұраныстарды орындауға жеткілікті ресурстар болмаса, ол сенімсіз көршілердің сұраныстарын қабылдамайды және қалғандарынан сенімділігін азайту арқылы төлем алады.

Файл ортақтастыру

Бұл сатыдағы негізгі қолданыс – анонимді, цензураға төзімді файлдарды бөлісу, бұл пайдаланушыларға кез келген түрдегі ақпаратты анонимді түрде жариялауға немесе алуға мүмкіндік береді. Анонимділікті қамтамасыз ететін GNUnet протоколы GAP (GNUnet анонимділік протоколы) деп аталады. GNUnet FS сонымен қатар, бөліскен файлдарды метадеректермен автоматты түрде түсіндіру үшін GNU libextractor-ді пайдалана алады.

Файл кодтау

GNUnet-пен бөлісетін файлдар ECRS (цензураға төзімді бөлісуге арналған кодтау) кодталған. Барлық мазмұн GBlock түрінде ұсынылады. Әрбір GBlock-та 1024 байт бар. GBlock-тың бірнеше түрі бар, олардың әрқайсысы белгілі бір мақсатқа қызмет етеді. Кез келген GBlock RIPEMD 160 хэші арқылы бірегей анықталады. DBlock-тар файлдың нақты мазмұнын ғана сақтайды. Файл 1024 байттық шекараларда бөлінеді және нәтижедегі кескіндер DBlock-тарда сақталады. DBlock-тар IBlock-тар арқылы Merkle ағашына байланыстырылады, олар DBlock идентификаторларын сақтайды. Блоктар желіде сақталған кезде туынды симметриялық кілтпен шифрланады.

Сұрақтар мен жауаптар

GNUnet Анонимділік протоколы сұраныстар мен жауаптардан тұрады. Жолдау түйінінің жүктемесіне байланысты хабарламалар нөл немесе одан көп түйіндерге жіберіледі. Сұраулар мазмұнды іздеу және дерек блоктарын сұрау үшін қолданылады. Сұрау ресурстың идентификаторын, жауап адресін, басымдықты және TTL (Time to Live - Өмір сүру уақыты) қамтиды. Деректің ресурстық идентификаторы – үштік хеш. Сұрауға жауап беретін түйін, өзінде сұралған ресурс бар екенін аралық түйіндерге бермей, дәлелдеу үшін ұсынады, сондықтан аралық түйіндер жауапты шифрлай алмайды. Бұл Freenet протоколынан басты айырмашылық. Freenet-те жауап әрқашан сұраудың сол жолымен кері таратылады, ал GNUnet-те жол қысқа болуы мүмкін. Сұрау алған түйін оны тастап жіберуі, жауап адресін өзгертпей жіберуі немесе жауап адресін өзінің адресімен ауыстырып, жанама түрде жіберуі мүмкін. Сұрауларды жанама түрде жіберу арқылы түйін өзінің сұраныстары үшін жасырын трафик қамтамасыз етеді, ал оларды тікелей жіберу арқылы жауап таратудағы сілтеме болудан аулақ болып, өткізу қабілетін сақтайды. Бұл мүмкіндік пайдаланушыға тиімділік үшін анонимділікті саудалауға мүмкіндік береді. Пайдаланушы әр жариялау, іздеу және жүктеу операциясы үшін анонимділік деңгейін анықтай алады. Анонимді емес файлдарды бөлісу үшін анонимділік деңгейін нөлге орнатуға болады. GNUnet-тің DHT инфрақұрылымы тек анонимді емес файлдарды бөлісу белгіленген жағдайда ғана қолданылады. Анонимділік деңгейі пайдаланушының өз әрекеттерін жасыру үшін қанша жасырын трафик қажет екенін анықтайды. Басымдық ресурстар жетіспеушілігі жағдайында пайдаланушының қанша сенімді жұмсауға дайын екенін анықтайды. TTL сұраулардың желіде тым ұзақ уақыт қалуын болдырмау үшін қолданылады.

GNU атаулар жүйесі

GNUnet-ке GNU Name System (GNS) жүзеге асырылуы кіреді, ол DNS-тің орталықтандырылмаған және цензураға төзімді баламасы болып табылады. GNS-де әрбір пайдаланушы өз аймақтарын басқарады және басқа пайдаланушылар басқаратын аймақтарға қосалқы домендерді тапсыруға болады. Басқа пайдаланушылар анықтаған жазбаларды іздеу GNUnet-тің DHT арқылы жүзеге асырылады. GNS GANA тіркелімінде стандартталған, ал ол GNS-де ".alt" жоғарғы деңгейлі доменін басқарады.

Хаттаманың аудармасы

GNUnet пирден пирге желі арқылы IP трафигін өткізе алады. Қажет болған жағдайда, GNUnet осы процесте IPv4-тен IPv6-ға протокол аудармасын жүзеге асыруы мүмкін. GNUnet DNS сұраныстарын проксилеуге және қажет болған жағдайда адрестерді қалаған адрестік отбасыға бейімдеуге арналған DNS қолданба деңгейіндегі шлюзін ұсынады. Осылайша, GNUnet IPv6-ға өтуді жеңілдетуге мүмкіндік беретін технологияны ұсынады. Бұдан әрі, GNS жүйесімен біріктірілген GNUnet протоколын аудару жүйесі желідегі бір пирде жергілікті түрде іске қосылған және GNS атауын ашу арқылы ғана қолжетімді IP-негізгі қызметтерге қол жеткізу үшін пайдаланылуы мүмкін.

Әлеуметтік АЖИ

Габор X Тот 2013 жылдың қыркүйек айының басында масштабталу мүмкіндігін, кеңейтілуді және ұштан-ұшқа шифрланған байланысты қамтамасыз ететін GNUnet peer-to-peer платформасы үшін әлеуметтік хабар алмасу қызметінің дизайнын ұсынатын диссертация жариялады. Масштабталу мүмкіндігі көптеп тарату арқылы хабар жеткізу арқылы қамтамасыз етіледі, ал кеңейтілу PSYC (Protocol for SYnchronous Conferencing) қолдану арқылы мүмкін болады, ол кеңейтілетін RPC (Remote Procedure Call) синтаксисін ұсынады, бұл желідегі барлық түйіндердегі бағдарламалық құралды жаңарту қажеттілігінсіз уақыт өте келе дамуға мүмкіндік береді. PSYC қабатының тағы бір маңызды мүмкіндігі – мысалы, пайдаланушы профильдерін сақтау үшін қолданылатын күйлі көптеп тарату арналары. Ұштан-ұшқа шифрланған байланыс GNUnet-тің торлық қызметі арқылы қамтамасыз етіледі, оның үстінде көптеп тарату арналары құрылады. Жүйедегі анонимді пайдаланушылар мен әлеуметтік орындар криптографиялық идентификаторларға ие, олар өздерінің ашық кілті арқылы анықталады, ал GNS (GNU Name System) жүйесі арқылы адамдар есте сақтауға қолайлы аттарға шамаланған, мұнда әрбір анонимнің өз орындарына сілтеме жасайтын аймағы болады. Бұл GNUnet платформасын толыққанды peer-to-peer әлеуметтік желі платформасына айналдыру үшін қажетті құрылыс блогы болып табылады.

Чат

CADET модуліне чат қосылды, оның GNOME үшін GTK интерфейсі бар, ол жаңа буын Linux телефондары (мысалы, Librem 5 немесе PinePhone) үшін арнайы дамытылған.