GNUnet – свободный программный пакет для безопасного P2P-соединения, не нуждающегося в серверах. Проект GNUnet возник в 2001 году и был вдохновлён целым рядом технических идей, призванных обеспечить безопасный файлообмен в пиринговых сетях.
Основная цель проекта – создание надёжной, открытой, равноправной и анонимной сети обмена информацией. Планируется предоставление множества интернет-услуг, а сама сеть стремится стать платформой для разработки децентрализованных сервисов следующего поколения. GNUnet использует Drupal в качестве системы управления содержимым и Mantis для отслеживания ошибок.
За основу GNUnet были взяты существующие Freenet и Mnet. Однако получившаяся система существенно отличается от уже существующих.
Первый реализованный сервис позволяет обмениваться файлами анонимно и без какой либо сетевой цензуры. GNUnet может использовать для передачи данных как стандартные протоколы TCP и UDP, так и необычные для P2P HTTP, причём с возможностью работы через прокси-сервер, а также SMTP. Кроме того, GNUnet может работать за NAT.
Для идентификации объектов и сервисов GNUnet использует URI. Любой объект в сети GNUnet идентифицируется с помощью URI, который в текущей версии выглядит как gnunet://module/identifier, где module – имя модуля сети, а identifier – уникальный хеш, идентифицирующий сам объект.
Самый популярным и наиболее стабильным сервисом GNUnet является File Sharing, предназначенный для анонимного децентрализованного файлообмена. Он позволяет искать, выкладывать и скачивать как отдельные файлы, так и целые директории. Благодаря сложному механизму роутинга запросов и ответов пользователь не может знать, от кого он принимает или кому передаёт файл.
В GNUnet можно настраивать степень анонимности от 0 (не анонимно) до бесконечности. По умолчанию используется 1. Передаваемые файлы закодированы с помощью ECRS (An Encoding for Censorship-Resistant Sharing) и обрабатываются соответствующим модулем.
Также в GNUnet существует простейший чат, и планируются ещё несколько служб, например, анонимная P2P-почта.
На данный момент в проект входит демон gnunetd, несколько библиотек и два фронтенда: gnunet-gtk и gnunet-qt, соответственно написанные с использованием GTK+ и Qt.
Ссылки