Анонимные сети — компьютерные сети, предназначенные для достижения анонимности в Интернете и функционирующие в глобальной сети. и распределённый характер анонимных сетей, исключающий единую точку отказа и единый вектор атак, делают или даже взлом части узлов сети не фатальным событием.
Разработчики ищут компромисс между степенью безопасности и юзабилити системы и ее «прозрачностью» для конечного пользователя. Также важен аспект сохранения анонимности и конфиденциальности под воздействием методов социальной инженерии или какого-либо давления на оператора сервера. Пользователь платит за анонимность более длительным временем отклика, снижением скорости и большими объёмами сетевого трафика.
История Первой относительно успешной анонимной сетью был коммерческий сервис Freedom, функционировавший с 1998 до 2001 года. Компанией ZKS были установлены выделенные серверы, с которыми клиенты соединялись посредством криптографического протокола. Узел, на который приходили пакеты от пользователя Freedom, не мог идентифицировать настоящего отправителя. Сама сеть функционировала на уровне протокола IP. В это же время начали активно развиваться другие проекты.
Децентрализованные анонимные сети В децентрализованной сети любая машина может установить соединение с другой, а также послать ей запрос на предоставление ресурсов. Каждая машина обрабатывает запросы от других в качестве сервера, отсылая и принимая запросы, а также выполняя другие вспомогательные и административные функции. Любой участник такой сети не обязан гарантировать постоянного соединения и может разорвать его в любой момент времени. Но при достижении определённого размера сети в ней одновременно начинают существовать множество серверов с одинаковыми функциями.
Freenet — это децентрализованная и полностью анонимная одноранговая сеть, работающая поверх интернета, включающая большое количество равноправных компьютеров и позволяющая публиковать любые материалы без возможности выйти на автора. Конфиденциальность данных гарантируется строгой криптографией: чтобы получить файл, в запросе требуется сообщить ассоциированный с ним ключ. Роль такого ключа выполняет хеш-код файла или DSA-ключ, что образует также механизм проверки целостности. В настоящее время Freenet начинает использовать принцип луковой маршрутизации.
GNUnet — это программный пакет для безопасного P2P-соединения, не нуждающийся в серверах. Основная кодовая база написана на языке C. GNUnet является частью проекта GNU. Сервис, реализованный поверх сетевого уровня, позволяет обмениваться файлами анонимно и без какой-либо сетевой цензуры. Анонимность обеспечивается за счет того, что исходящие от узла сети сообщения неотличимы от чужих сообщений, в передаче которых участвует узел. Все узлы действуют как маршрутизаторы, соединения между которыми шифруются, а уровень использования пропускной способности канала поддерживается постоянным. GNUnet использует простую, основанную на избытках экономическую модель для выделения ресурсов: узлы, которые больше дают сети, награждаются лучшим обслуживанием. Проект GNUnet возник в 2001 году и был вдохновлён целым рядом технических идей, призванных обеспечить безопасный файлообмен в пиринговых сетях. Основные технические вопросы работы GNUnet подробно описаны в ряде научных публикаций. Среди них — улучшенное кодирование содержимого ECRS и новый анонимный протокол маршрутизации gap. Их особенности позволяют поощрять в GNUnet активных участников. В периоды высокой загрузки сети приоритет получают те участники, которые сделали больший вклад в прошлом.
Gnutella — первая полностью децентрализованная файлообменная сеть, разработанная в 1999 году. При подключении клиент получает от узла, с которым ему удалось соединиться, список из пяти активных узлов, которым отсылается запрос на поиск ресурса по ключевому слову. Узлы ищут у себя соответствующие запросу ресурсы и, если не находят их, пересылают запрос активным узлам вверх по «дереву», пока не найдется ресурс или не будет превышено максимальное число шагов. Такой поиск называется размножением запросов (query flooding). Однако, подобная реализация ведет к экспоненциальному росту числа запросов и на верхних уровнях «дерева» может привести к отказу в обслуживании, что неоднократно наблюдалось на практике. Поэтому разработчики усовершенствовали алгоритм и ввели правила, в соответствии с которыми запросы могут пересылать вверх по «дереву» только выделенные (ultrapeers), а остальные (leaves) могут лишь делать запросы. Также была введена система кэширующих узлов. Запросы в сети Gnutella пересылаются по TCP или UDP, а копирование файлов осуществляется через протокол HTTP. В последнее время появились расширения для клиентских программ, позволяющие копировать файлы по UDP и делать XML-запросы метаинформации о файлах. Недостатки протокола Gnutella инициировали разработку принципиально новых алгоритмов поиска маршрутов и ресурсов, что привело к созданию группы протоколов DHT и, в частности, Kademlia, который широко используется в наиболее крупных сетях.
Gnutella2 — созданный в 2002 г. принципиально новый протокол и первые его клиенты, обладающие обратной совместимостью с клиентами Gnutella. В соответствии с ним часть узлов становится концентраторами, остальные — обычными узлами (leaves). Каждый обычный узел имеет соединение с одним-двумя концентраторами, которые связаны с сотнями обычных узлов и десятками других концентраторов. Каждый узел периодически пересылает концентратору список идентификаторов ключевых слов, по которым можно найти публикуемые данным узлом ресурсы. Идентификаторы сохраняются в общей таблице на концентраторе. Когда узлу нужно найти ресурс, он посылает запрос по ключевому слову своему концентратору, который либо находит ресурс в своей таблице и возвращает ID (идентификатор) узла, обладающего ресурсом, либо возвращает список других концентраторов, которые узел вновь запрашивает по очереди случайным образом. Такой поиск называется поиском с помощью метода блужданий (random walk). Примечательной особенностью сети Gnutella2 является возможность размножения информации о файле в сети без копирования самого файла, что очень полезно с точки зрения отслеживания вирусов. Для передаваемых пакетов в сети разработан собственный формат, гибко реализующий возможность наращивания функциональности сети путём добавления дополнительной служебной информации. Запросы и списки ID ключевых слов пересылаются на концентраторы по UDP.
I2P — форк проекта Freenet, начатый в 2003 году с целью обеспечить анонимный доступ к защищённым ресурсам, среди которых блоги (Syndie), IRC (ircProxy), электронная почта (Susimail), сервисы передачи файлов и групп новостей, шлюзы Freenet и . Будучи основанной на SSU (Secure Semireliable UDP), имеющей функции аутентификации и управления потоком, I2P предлагает сетевой мост — т. н. I2PTunnel — обеспечивающий передачу TCP-пакетов по сети I2P, а следовательно — и средство создания защищённых туннелей к любым TCP-службам, в доступе к которым может возникнуть необходимость. При обмене данными по I2P выполняется их многоуровневое шифрование (сквозное, чесночное, туннельное и транспортного уровня), а также криптографическая аутентификация конечных узлов. Узлы сети I2P представлены идентификаторами, не имеющими логической связи с их реальными IP-адресами. Клиентское программное обеспечение функционирует как маршрутизатор, записывающий в таблицу данные узлов для передачи входящего и исходящего трафика. Передаваемый пакет проходит временные односторонние цепочки: маршрутизаторы исходящего трафика, построенные на узле-отправителе, и маршрутизаторы входящего трафика, построенные узлом-адресатом. Такие туннели перестраиваются каждые 10 минут. Управляя длиной цепочки маршрутизаторов в клиентском ПО, пользователь выбирает для себя нужное соотношение между степенью анонимности, латентностью и пропускной способностью сети. Передаваемое же сообщение проходит такой путь, который отвечает моделям угрозы отправителя и получателя. Клиент I2P нередко критиковался за то, что написан на Java, поэтому была реализована C++-версия клиента — i2pd, так называемый «Пурпурный I2P».
Kad Network — оверлейная децентрализованная файлообменная сеть, реализация протокола одноранговой связи «Kademlia» (Кадемлия).
NeoKad — ответвление сети Kademlia, целью которого является развитие гибкости и анонимности.
OpenKAD — реализация Kademlia DHT на Java, ответвление «Kad», которое находилось в разработке до марта 2013 года.
RetroShare — свободная программа для бессерверной пересылки и получения электронных сообщений, мгновенного обмена сообщениями и файлами с помощью шифрованной F2F (и опционально P2P) сети, построенной на GPG. Относится к классу даркнет-сетей, топология которых подразумевает осуществление соединений и обмен данными лишь со своими друзьями. Использует Turtle F2F для файлообмена и DHT Kademlia для поиска.
ZeroNet — децентрализованная сеть, работающая по протоколу BitTorrent, использует Bitcoin-совместимое асимметричное шифрование для адресации и администрирования сайтов и как следствие аналогичную криптостойкость, а также домены .bit, регистрируемые в системе Namecoin. Имеется поддержка работы через Tor.
Гибридные анонимные сети В гибридных сетях существуют серверы, используемые для координации работы, поиска или предоставления информации о существующих машинах сети и их статусе. Гибридные сети сочетают скорость централизованных сетей и надёжность децентрализованных благодаря схемам с независимыми серверами индексации, синхронизирующими данные между собой. При выходе из строя одного или нескольких серверов сеть продолжает функционировать.
Hyperboria — гибридная защищённая самоорганизующаяся сеть, разработанная на протоколе Cjdns. Может работать через обычный интернет, создавая оверлейную сеть, или напрямую между роутерами, образуя Mesh-сеть. Находится в стадии тестирования. Заявляется приватный трафик, высокая скорость работы (в десятки раз больше, чем у Tor), децентрализованный DNS, индивидуальный IPv6-адрес каждому пользователю.
Nym — защищённая смешанная сеть, использующая перемешивание пакетов на индивидуальном уровне для всего трафика, обеспечивая повышенную конфиденциальность за счет скрытия времени и объема пакетов, что препятствует отслеживанию метаданных даже самыми продвинутыми противниками.
Psiphon — «Проект программного обеспечения для защиты прав человека», разработанный в лаборатории Citizen Lab университета Торонто при Центре международных исследований Мунка, входящей в OpenNet Initiative. Система представляет собой часть проекта CiviSec Project той же лаборатории и финансируется фондом «Открытое общество». Его цель — обеспечить граждан разных стран доступом к интернет-ресурсам, заблокированным сетевой цензурой. В сети Psiphon жители стран со свободным Интернетом предоставляют свои компьютеры для хостинга прокси-серверов с зашифрованным соединением, используемых гражданами стран с интернет-цензурой. Доступ осуществляется через доверенных участников проекта. Для соединения с прокси-сервером используются уникальные веб-адрес, логин и пароль, причём без внесения каких-либо изменений в настройки браузера. Однако, такая процедура может осуществляться только доверенными лицами, так как администратор прокси-сервера владеет документированной информацией об активности своего пользователя. Программа предупреждает администратора об изменениях в его собственной сети, чтобы он мог предоставить пользователям новые веб-адреса. Psiphon поддерживает анонимный веб-серфинг и блогинг, но не подходит для чатов и VoIP. В дальнейшем планируется развить проект в отдельную социальную сеть.
Ricochet Refresh — форк проекта Ricochet для анонимного однорангового обмена мгновенными сообщениями.