GNUnet — это программная среда для децентрализованных одноранговых сетей и официальный пакет GNU . Платформа предлагает шифрование канала , обнаружение одноранговых узлов , распределение ресурсов , связь по многим транспортным протоколам (таким как TCP , UDP , HTTP , HTTPS , WLAN и Bluetooth ) и различные базовые одноранговые алгоритмы для маршрутизации , многоадресной рассылки и оценки размера сети . [7][8]
Базовая топология сети GNUnet представляет собой ячеистую сеть . GNUnet включает в себя распределенную хэш-таблицу (DHT), которая представляет собой рандомизированный вариант Kademlia , который по-прежнему может эффективно маршрутизироваться в небольших сетях . GNUnet предлагает опцию « топологии F2F » для ограничения подключений только доверенными друзьями пользователей. Собственные друзья друзей пользователей (и так далее) могут затем косвенно обмениваться файлами с компьютером пользователя, никогда не используя его IP-адрес напрямую.
GNUnet использует унифицированные идентификаторы ресурсов (не одобренные IANA , хотя заявка была подана). [ когда? ] URI GNUnet состоят из двух основных частей: модуля и идентификатора модуля. URI GNUnet имеет форму , gnunet://module/identifier
где модуль — это имя модуля, а идентификатор — это строка, специфичная для модуля.
Основная кодовая база написана на C , но есть привязки на других языках для создания API для разработки расширений на этих языках. GNUnet является частью проекта GNU . Он вызвал интерес в хакерском сообществе после разоблачений PRISM . [9]
GNUnet состоит из нескольких подсистем, основными из которых являются транспортная и базовая подсистемы. [10] Транспортная подсистема обеспечивает небезопасную связь на канальном уровне, а ядро обеспечивает обнаружение одноранговых узлов и шифрование. [11] Поверх базовой подсистемы создаются различные приложения.
GNUnet включает в основной дистрибутив фреймворка различные P2P-приложения, включая обмен файлами, чат и VPN; кроме того, несколько внешних проектов (например, secushare ) также расширяют инфраструктуру GNUnet.