
Если я сейчас попрошу вас назвать самые популярные файлообменные сети, то, вероятно, вы вспомните лишь о 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 бит) в целом должны неплохо защищать анонимность пользователей, но случаи уголовного преследования все же есть. Причем наказывали как раздающих, так и скачивающих. Правда, стоит учитывать, что эти прецеденты единичные и их вполне можно считать скорее демонстрацией реальности наказания, чем тотальным преследованием.
Комментарии (15)
thegriglat
16.06.2025 07:38чем это лучше IPFS?
VADemon
16.06.2025 07:38При, якобы, 30 ТБ данных, конкуренция в номинации Плохое Масштабирование не грозит.
А так перечитайте последние параграфы. IPFS - распределенное публичное хранилище. Нашел, запросил, скачал. Perfect Dark пытается слоями наростить анонимность. Судя по статье получилось на троечку... чего хватает от ленивых троллей.
PS: И вне песочницы я бы это поделие десятилетней давности не запускал. Фаззеров на такие проекты не хватает.
vladkorotnev
16.06.2025 07:38PS: И вне песочницы я бы это поделие десятилетней давности не запускал. Фаззеров на такие проекты не хватает.
Мысль хорошая с учётом, что оно умеет натягать по кусочкам из Unity для себя обновление, перезаписать свой бинарник и перезапуститься. Кто знает, что там прилетит в следующий раз.
durnoy
16.06.2025 07:38Правильно ли я понимаю, что анонимность анонимностью, и файлы зашифрованы, но файлы скачиваются с конкретных узлов? То есть если вы знаете хеш файла, то вы знаете IP, который его раздает. А дальше, как с торрентами, когда правообладатель пишет письма провайдерам с просьбой разобраться. То есть без VPN нет анонимности.
vladkorotnev
16.06.2025 07:38Не совсем так. При заливке файла он бьётся на куски, которые шифруются и отдаются разным нодам случайным образом. Список кусков, емнип, так же шифруется и отдаётся нескольким другим нодам, а ссылка на него уже попадает в DKT, заодно с цифровой подписью релизера, если таковая была установлена. (Sign в правой колонке на скрине — это оно самое)
Таким образом, после заливки конкретного файла ни у кого нету. При запросе файла клиент идёт к "соседям" и спрашивает — есть кусок с ID=0x50513610? И получает либо кусок, либо редирект вида "не, тут нету[, но был у кого-то в пуле в диапазоне от сих до сих]". Когда полный список кусков и все куски наконец-то собраны, то уже локально запускается процесс расшифровки оных и склеивание файла воедино.
Имея надзор над айпишником вы можете узнать, что
поциэнтабонент пользуется сетью — но качает ли он что-то целенаправленно, или же рипает туда свеженькие блюрейники, или тупо держит клиент включённым из чувства социальной справедливости и излишков денег на электроэнергию, можно лишь получив доступ на сам комп и посмотрев в статус клиента и наличествующие на диске файлы.Могу слегка путать детали, т.к. всё это было давно и неправда, но в общих чертах принцип такой.
А ещё каждая нода может броадкастить в пару сотен байт произвольное текстовое сообщение в общий Flow, про что в статье вообще не упомянуто :-)
И встречаются иногда забавные/замороченные экземпляры
Вообще интерфейс поиска мне в нём нравился больше чем на среднем торрент-трекере, но по многим причинам пришлось забить на пользование оным
durnoy
16.06.2025 07:38Ага, интересно. Получается следующее. Клиент скачивает куски и расшифровывает файл. Клиент видит, что это свежее кино. Клиент также знает, что куски скачаны с конкретный IP-шников. Возможно, это слишком размазанная информация. Раз никакая нода не содержит файл целиком (хотя статистически, наверное, может так получиться), то этого недостаточно, чтобы писать гневные письма. В торрентах же обычно видно, что у ноды есть весь файл.
vladkorotnev
16.06.2025 07:38Статистически может, но чтобы совпало и наличие целиком файла в одной ноде, и рандомайзер чтобы выбрал её для всех кусков файла — это прям повезти должно
durnoy
16.06.2025 07:38Все же не совсем понятно, какую задачу решает шифрование. Если любой клиент имеет возможность таки скачать все куски и получить файл, то ничего секретного нет.
Разве что куски файлов в явном виде не диске нод не лежат. Но это мало, что даёт же. В принципе же можно расшифровать любой кусок, если пройтись по всем таблицам и построить обратные индексы (от id кусков к исходным файлам.
vladkorotnev
16.06.2025 07:38Разве что куски файлов в явном виде не диске нод не лежат
Скорее всего именно это. Трешанины там такой полно, что если в открытом виде даже по кускам найдут, могут много всяких разных обвинений выкатить.
В принципе же можно расшифровать любой кусок, если пройтись по всем таблицам
Так именно этим же клиент и занимается, выходит?
Ну и не помню, было там блочное шифрование (и соотв-но необходимость наличия всех кусков чтобы расшифровать файл) или нет.
poriogam
16.06.2025 07:38Так чем это отличается от торрентов? Там же тоже раздают кусками, могут скачать 3 серии из 10 и на этом остановится, а раздача идёт.
То что юзер не знает что конкретно он хранит и раздает освобождает от ответственности что ли.
vladkorotnev
16.06.2025 07:38Ну так в случае торрентов он будет раздавать три серии целиком (и с ненулевой вероятностью будет сильно больше одного пира, которые получат какую-то серию целиком от этой ноды).
А здесь отдаёшь какой-то кусочек шума, который по случайному совпадению можно слепить с другими кусочками от других людей и получить серию. Но целиком ни самой серии, ни полного комплекта "волшебного шума" для её получения у тебя не хранится на диске.
А ответственность вообще штука забавная — по японскому законодательству незаконно даже скачивать, если знаешь, что это незаконная копия. Поэтому фиг знает, что конкретно тут преследовалось.
poriogam
16.06.2025 07:38ГПТ говорит что там всё гораздо сложнее. Куски файлов напрямую не передаются, только через постоянно меняющиеся цепочки посредников.
Но всё равно же есть кто то крайний.
VADemon
16.06.2025 07:38Тут надо копаться глубже, чем представлено в статье. Первый мой вопрос: держит ли раздающий или скачивающий все/часть кусков постоянно. Если да, то без транспортной анонимизации уже зацепка.
dolbograd
чего не сделаешь ради разблюренных половых органов
saege5b
В той же DC можно спокойно менять имена у скачанных файлов. Для книжек-музыки это здорово помогает.