GNUnet (GNU's Framework for Secure Peer-to-Peer Networking) — проект по созданию фреймворка (программного пакета) для создания полностью децентрализованной анонимной p2p (peer-to-peer) сети, отличающаяся отсутствием центрального сервера.
Анонимные сети — компьютерные сети, создаваемые для достижения анонимности в Интернет и работающие поверх глобальной сети. Специфика таких сетей заключается в том что разработчики вынуждены идти на компромисс между степенью защиты и лёгкостью использования системы, её "прозрачностью" для конечного пользователя. За анонимность пользователю приходится расплачиваться увеличением времени отклика, снижением скорости и увеличением объёма сетевого трафика.
Проект GNUnet зародился в конце 2001 года, как набор новых технических идей для создания анонимной p2p-сети. За основу были взяты уже существующие на тот момент анонимные, децентрализованные сети Freenet и Mnet. Однако получившаяся система существенно отличалась от уже существующих.
Основная цель проекта GNUnet создание надёжной, децентрализованной и полностью анонимной одноранговой сети (оверлейная компьютерная сеть, основанная на равноправии участников, в которой каждый участник является как клиентом, так и сервером), работающей поверх сети Интернет.
Первый протокол, реализованный на основе этой сети предназначен для децентрализованного, анонимного обмена данными без возможности их цензуры. Анонимность в сети обеспечивается путём нивелирования разницы между сообщениями, которые были посланы самим узлом и внешними сообщениями, которые узел ретранслирует (маршрутизирует) для других узлов.
Все узлы сети GNUnet работают как маршрутизаторы, шифруя прямые соединения с другими узлами и поддерживая постоянный уровень нагрузки на сеть, что бы обмениваться сообщениями. В GNUnet используется простая эргономическая модель, основанная на избыточности, для распределения ресурсов в сети.
Узлы в GNUnet работают в клиент-серверном режиме, постоянно отслеживая друг друга (в плане использования ресурсов) и узлы которые активно участвуют в работе сети, обслуживаются с более высоким приоритетом (поощряются приоритетным обслуживанием их запросов).
Основным рабочим процессом узла сети GNUnet является gnunetd, работающий в качестве демона/daemon (фонового процесса), без необходимости запуска какого либо интерфейса. Так же в основной проект входит несколько библиотек и графические утилиты для конфигурации демона gnunet-setup, gnunet-gtk и gnunet-qt (написанные соответственно на GTK и QT).
Графический интерфейс gnunet-setup самый простой и предназначается только для конфигурации gnunetd (который не обязательно должен быть запущен на той же машине). Графические интерфейсы gnunet-gtk и gnunet-qt позволяют производить настройки gnunetd, а так же искать, публиковать и скачивать файлы.
В проекте GNUnet анонимный и децентрализованный файловый обмен (File Sharing) является самым популярным и наиболее стабильным сервисом. Он позволяет искать, выкладывать и скачивать как отдельные файлы, так и целые директории. Благодаря сложному механизму перенаправления (роутинга) запросов и ответов, пользователь не может знать от кого он принимает или кому передаёт файл.
GNUnet может использовать для передачи данных как стандартные протоколы TCP и UDP, так и не обычные для p2p HTTP, есть возможность работы через прокси-сервер, а так же SMTP. Кроме того GNUnet может работать за NAT (Network Address Translation / Преобразование сетевых адресов).
VPN-сервис позволяет предоставить скрытые сервисы внутри сети GNUnet (в домене .gnunet) и может быть использован для туннелирования IPv4 и IPv6 трафика, через p2p-сеть.
В сети GNUnet все файлы, поисковые запросы и их результаты шифруются (для предотвращения контроля за действиями пользователя). К тому же протокол GNUnet разработан так, что бы максимально затруднить вычисление пользователя на основании его сетевой активности.
В GNUnet можно настраивать степень анонимности, от 0 (не анонимно) до бесконечности (по умолчанию используется 1). Передаваемые файлы закодированы с помощью системы улучшенного шифрования контента ECRS (An Encoding for Censorship-Resistant Sharing/Шифрование для устойчивого к цензуре обмена файлами) и обрабатывается соответствующим модулем.
Кроме того GNUnet расширяемый, на его основе можно легко построить новые p2p-приложения или добавить в него альтернативные сетевые транспорты. В GNUnet помимо файлообмена существует простейший чат и планируется ещё несколько служб (например p2p-почты и другой инфраструктуры общего назначения работающих по p2p-протоколам).
Основная проблема сети GNUnet это высокая задержка, низкая скорость работы и достаточно высокое потребление ресурсов (хотя это проблема всех децинтрализованных сетей с шифрованием). Но это та цена которую приходится платить за децинтрализованность и шифрование, обеспечивающих наиболее высокий уровень безопасности (анонимности).
Проект GNUnet продолжает улучшаться, как в плане технических идей, так и в плане их реализации. Часто это происходит благодаря обсуждению с разработчиками из других проектов, работающих в том же направлении (например с разработчиками TOR / Реализация второго поколения "луковой маршрутизации", технология анонимного обмена информацией через компьютерную сеть).
GNUnet является хорошим решением для абсолютно анонимного обмена файлами (несмотря на недостатки), а ключевые технические идеи продолжают отличать GNUnet от других проектов, аналогичного назначения. Возможно в будущем, с увеличением пропускной способности сети, с повышением популярности и увеличению количества контента в сети скорость её работы значительно увеличится...
Лицензия: GNU GPL