
Если я сейчас попрошу вас назвать самые популярные файлообменные сети, то, вероятно, вы вспомните лишь о BitTorrent. В реальности таких сетей много, но пользуется ими значительно меньше людей, чем 20 лет назад. Отчасти этому способствовало развитие облачных сервисов и файловых хостингов, предлагающих десятки гигабайт бесплатного места для хранения данных.
Cети вроде eDonkey2000 (она же eDonkey или eD2k), Gnutella или Freenet до сих пор живы, хотя и не могут похвастаться значительным количеством пользователей. Ретроэнтузиасты даже сейчас поддерживают серверы Gopher, древнего протокола для распределенного поиска и передачи документов. А еще уже почти 20 лет существует P2P-сеть, которая была разработана анонимным программистом с ником «председатель». Подробнее об этом — дальше!
Winny (не Пух)

Япония всегда удивляла меня своим подходом к созданию вещей — это и футуристичность, и консерватизм, и стремление к идеалу. В 2002 году Исаму Канеко (金子勇), научный сотрудник Токийского университета, разработал Winny (aka WinNY), первую японскую анонимную P2P-сеть. Информация о ней была опубликована на популярном борде 2ch.net, одном из самых активных ресурсов онлайн-комьюнити Японии в те годы.
Работала сеть так: клиент должен был получить зашифрованный список узлов, позволяющих подключиться к другим узлам и таким образом стать частью сети. Пользователь вводил три ключевых слова, которые наиболее точно отражали его интересы, а клиент, исходя из них, выбирал узлы для подключения.
Каждый компьютер хранит часть данных (зашифрованный кэш), а вместе они представляют собой распределенную сеть. Чтобы скачать какой-то конкретный файл, узлу необходимо указать его ключевые слова, являющиеся триггерами закачки. Шифрование должно обеспечивать анонимность, однако в то же время пользователи часто сами анонсировали раздачи файлов на публичных бордах.
Исаму Канеко преследовал вполне благую цель, но, сам того не осознавая, создал практически идеальный пиратский инструмент, позволяющий любому пользователю скачивать нелегальные материалы. Это привело к тому, что спустя два года он был арестован полицией префектуры Киото по подозрению в содействии нарушения авторских прав.
Тут стоит сделать небольшую ремарку: в Японии достаточно щепетильно относятся к интеллектуальной собственности, поскольку она считается более ценным ресурсом, чем, например, полезные ископаемые.
В 2006 году состоялся суд. Сторона обвинения требовала год тюремного заключения. В итоге Исаму Канеко признали виновным, постановив выплатить 1,5 млн йен штрафа (~13 200 $). Обе стороны незамедлительно обжаловали приговор в Высоком суде Осаки. Обвинителю штраф показался незначительным наказанием, а ответчику, наоборот, слишком жестким.
Через пять лет в деле Исаму Канеко была поставлена точка. Высокий суд Осаки отменил приговор нижестоящей инстанции и полностью оправдал его по всем пунктам. Связано это с тем, что обвинение не смогло доказать факт создания Winny с умыслом незаконного использования. Увы, но эта победа далась очень дорогой ценой. Борьба за свое доброе имя сильно измотала его, и в 2013 году Исаму скончался от острого инфаркта миокарда в возрасте 43 лет.
По мотивам этой непростой судебной истории в 2023 был снят фильм Winny. Ключевой вопрос, который режиссер Юсаку Мацумото (松本優作) ставит перед зрителями, — можно ли обвинять создателя инструмента за его злоупотребление другими? В фильме Исаму был представлен гением, загнанным в угол и вынужденным сражаться с судебной системой страны. Правоохранительные органы при этом действуют «по результату», переигрывая процесс с юридической точки зрения.
Заметим, что Winny, хотя и может показаться безобидным приложением, доставил немало головной боли разным компаниям и государственным органам. Проблема тут даже не столько в авторских правах и противозаконном контенте. Разработанный, чтобы делиться данными, Winny стал источником множества «сливов» чувствительной и даже секретной информации.
Крупнейшая японская авиакомпания ANA (All Nippon Airlines) из-за компьютера с Winny случайно сделала достоянием общественности коды к зонам безопасности 29 аэропортов страны. Точно таким же образом в сеть попали секретные данные Японского Флота (JMSDF, Japan Maritime Self-Defense Force). Вишенкой на торте стали конфиденциальные данные из полицейского управления префектуры Окаяма. Подробности и имена жертв сексуальных преступлений — лишь небольшая часть того, что было расшарено пользователям P2P-сети (намеренно или нет, история умалчивает).
Share

Пока создатель Winny боролся с правоохранительной системой, появилось приложение Share, которое можно считать последователем и дальнейшим развитием идей P2P. Официального сайта проекта в публичном интернете не было, клиент распространялся на различных бордах от имени пользователя с никнеймом ファイル倉庫. Дословно это переводится как «Файловый склад». Настоящий автор программы остается неизвестным, вероятно, из-за истории с Winny.
Эта сеть использует менее запутанную систему ключевых слов и шифрует данные для анонимизации всех участников обмена. После получения и расшифровки они сохраняются в отдельной кэш-директории. Ее же система использует для раздачи недавно загруженных из сети файлов.
С одной стороны, это довольно удобное решение, но с другой — занимает много места на HDD. Каждый участник сети должен выделить приложению минимум 4 Гб, которые могут быть использованы для хранения кэшированных загрузок и раздачи другим узлам. На 2004 год такой концепт выглядел расточительно и не подходил для тех, чей жесткий диск был заполнен или имел объем менее 4 Гб.
В Share улучшена маршрутизация, позволяющая поддерживать связь только с теми узлами, на которых есть интересующие пользователя файлы, и не подключаться к тем, где они отсутствуют. Одновременно с этим были внедрены фильтры автоблокировки и триггеры автозагрузки. Бонусом Share имеет встроенный механизм, позволяющий бороться с подделками (когда один файл пытаются выдать за другой).
Довольно подозрительный фактор — закрытый исходный код. На то есть лишь одна разумная причина — попытка обеспечить дополнительную безопасность через неизвестность. Но это же самое обстоятельство способно сыграть полностью противоположную роль: в коде могут скрываться опасные уязвимости, способные привести к сливу всех данных с пользовательского устройства.
Perfect Dark

Теперь я наконец-то могу представить главного героя этого текста — P2P-сеть Perfect Dark. Фактически это преемник обеих предыдущих сетей, но значительно более продвинутый и эволюционировавший. Основной акцент был сделан на анонимность и функциональность.
Архитектура Perfect Dark состоит из трех частей:
DKT (Distributed Keyword Table) — распределенная таблица ключевых слов;
DHT (Distributed Hash Table) — распределенная хэш-таблица;
DU (Distributed Unity) — распределенное обязательное хранилище.
Логика подключения к узлам здесь почти такая же, как и у Winny с Share, хотя механизм маршрутизации реализован немного иначе. Вы выбираете ключевые слова, а система сама решает, к каким узлам подключиться, чтобы получить релевантный контент. Все ключи собраны в большую таблицу, и именно она позволяет эффективно искать файлы в сети.
Возникает только вопрос — где она хранится? Ответ вас удивит — везде и нигде. Данные ровным слоем «размазаны» по всем участникам сети, а обращение к DKT может пройти через десятки узлов, прежде чем данные будут найдены.DHT играет еще большую роль в работе системы. Она ответственна за маршрутизацию и поиск по хэшам. Ее нет на каком-то одном сервере. Кусочки этой таблицы лежат у каждого участника сети. Когда вы пытаетесь по хэшу найти конкретный файл, ваш клиент опрашивает ближайшие узлы. Если у тех есть данные о нем, то они вам их присылают. А если нет, то отправляют список узлов, которые должны знать об этом хэше больше.
Процесс повторяется множество раз, пока искомые данные не будут найдены, а также не будет составлен список наиболее близких к вам узлов, у которых этот файл есть (целиком или частично). Затем клиент устанавливает прямое P2P-соединение с узлами из списка и получает запрошенный файл.

Заключительная часть системы — распределенное хранилище Unity. Это терминология Perfect Dark, и она не имеет ровным счетом никакого отношения к самой известной платформе для разработки игр. Идея в том, чтобы на компьютере каждого участника сети было зарезервировано 40 Гб дискового пространства, которое система будет использовать по собственному усмотрению. В обмен на это вы получаете возможность поиска и скачивания интересующих вас файлов из сети.
Данные в Unity зашифрованы, их нельзя посмотреть или изменить. Это важно, так как ваш компьютер может становиться временным промежуточным узлом для хранения и передачи любых данных. При этом соблюдается анонимность и оптимальная скорость.
Несомненный плюс Perfect Dark — поддержка английского языка. Предшественники таким похвастаться не могли, для успешного запуска нужно было предварительно установить в систему японский язык. Чтобы эффективно искать файлы, используется алгоритм «обхода дерева». Вместе с булевыми операторами вроде AND, OR и NOT это помогает убирать нежелательные результаты.
Подводим итоги
Казалось бы, на дворе 2025 год, а сеть Perfect Dark до сих пор жива, несмотря на то, что последнее обновление клиента было 10 лет назад. Удивляет и объем доступных данных — 29 Тб это прилично для сети, в которой каждый узел хранит лишь 40 Гб. Понятно, что среди раздаваемых файлов можно легко поймать вирус или получить совершенно неприемлемый контент. Но по большей части сеть используется любителями манги и аниме, которые нашли удобный способ делиться контентом с единомышленниками.
Закрытый исходный код приложения и применяемые технологии шифрования данных (RSA 2 048 бит и AES 128 бит) в целом должны неплохо защищать анонимность пользователей, но случаи уголовного преследования все же есть. Причем наказывали как раздающих, так и скачивающих. Правда, стоит учитывать, что эти прецеденты единичные и их вполне можно считать скорее демонстрацией реальности наказания, чем тотальным преследованием.