Featured image of post Как работала Winny: поиск, кэш, ретрансляция и пределы анонимности

Как работала Winny: поиск, кэш, ретрансляция и пределы анонимности

Разбираем P2P-сеть Winny: метаданные, иерархию по скорости соединения и кэширование. Примеры объёма передачи, ограничения безопасности, утечки данных и судебное дело разработчика.

1. Какую задачу решала Winny

Нужно раздать большой файл множеству людей, но исходный отправитель ограничен в скорости отдачи. При этом хочется обойтись без центрального поискового сервера и затруднить установление того, кто опубликовал файл первым. Совмещение этих трёх целей и делает Winny технически интересной.

Winny — программа обмена файлами P2P, созданная Исаму Канэко. Первая пробная версия вышла 6 мая 2002 года. В одноранговой сети компьютеры не только получают данные, но и предоставляют их другим. Каждый участник называется пиром или узлом. Решение Верховного суда Японии, английский перевод в WIPO Lex

Само слово P2P не определяет ни способ поиска, ни анонимность. Следует различать обнаружение узлов, поиск файлов и передачу содержимого. Схемы и расчёты ниже — концептуальные модели, а не записи обмена конкретной версии.

2. Без центрального сервера, но не без точки входа

При обычной веб-раздаче пользователь обращается к указанному серверу. CDN может распределять доставку; для сравнения здесь берём один источник. В P2P получатель сам может стать поставщиком.

Winny не требует центрального сервера с каталогом файлов. Но новому узлу всё равно нужен первый адрес для подключения. Сведения о начальных узлах позволяют установить первые связи. Отсутствие центрального каталога не отменяет начальных контактов и инфраструктуры Интернета. Технические материалы JPNIC

Эти логические связи образуют оверлейную сеть, подобно автобусным маршрутам поверх дорожной сети. Каждый узел обменивается сведениями с некоторыми соседями, а не со всеми участниками напрямую.

Запасные пути могут сохранить связь после ухода соседа. Однако частые подключения и отключения приводят к устареванию сведений. Децентрализация сама по себе не гарантирует нахождение каждого файла или устойчивость ко всем отказам.

3. Отделить маленькую запись от большого файла

В библиотеке не приносят все книги при каждом запросе. Сначала смотрят каталог, затем заказывают нужную книгу. Winny также разделяет метаданные поиска и содержимое.

ЭлементНазначениеВажное различие
КлючИмя, размер, хеш, адрес получения и другие сведения каталогаЗдесь это не ключ расшифрования
Тело/кэшХранение и передача зашифрованного содержимогоДержатель кэша не обязательно первый публикатор
ХешИдентификация и сравнение файловНе подпись, доказывающая авторство или безопасность

В отчёте о выступлении Канэко объясняются это разделение и хранение данных на промежуточных узлах. Отчёт GLOCOM

Два файла с именем lecture.zip могут иметь разное содержимое. Связанные с содержимым идентификаторы помогают различать варианты, но вредоносные файлы тоже имеют хеши. Соответствие каталогу не означает безопасность запуска.

4. Иерархия и группировка направляют поиск

Если при каждом поиске спрашивать всех, трафик будет расти вместе с сетью. Winny строит иерархию с учётом скорости соединения: ключи и запросы идут преимущественно к верхним уровням. Кластеризация связывает узлы с похожими ключевыми словами интересов, повышая эффективность поиска. JPNIC

  flowchart BT
    A["Узел A"] -->|"Ключи и запросы"| B["Верхний узел B"]
    C["Узел C"] -->|"Ключи и запросы"| B
    B -->|"Продолжить поиск"| D["Верхний узел D"]

Это схема направления. «Верхний» не означает географический север или постоянный сервер организации. Даже быстрое соединение ограничено, и сосредоточение работы наверху создаёт нагрузку.

Кластеризацию можно представить как облегчение поиска музыкальных сведений рядом с любителями музыки. Сходство ключевых слов — не оценка истинности или качества содержимого искусственным интеллектом.

Описывать Winny как DHT, направляющую запрос к узлу с ближайшим хешем, неверно. Распределённая хеш-таблица назначает узлам ответственность за части пространства ключей; это другой подход. Применение хешей для идентификации файлов не превращает сеть в DHT. Идентификатор каталога и путь поиска — разные вещи.

5. Ретрансляция и кэш создают новых поставщиков

После нахождения кандидата нужно получить содержимое. Путь поисковых сведений не обязан совпадать с путём данных. В Winny предусмотрен механизм, при котором узел меняет адрес получения в ключе, принимает запрос, забирает данные у предыдущего источника, пересылает и сохраняет их. Кэш обслуживает последующие запросы. JPNIC

  flowchart LR
    A["Публикатор A"] -->|"Первая передача"| B["Ретранслятор B: хранит кэш"]
    B -->|"Передача"| C["Получатель C"]
    B -->|"Повторное использование"| D["Получатель D"]

D использует копию B, а не получает файл прямо от A. Нагрузка A снижается, а непосредственный отправитель для D отличается от первого публикатора. Это не означает, что каждая загрузка проходит одинаковое число посредников.

Передать 100 МБ ста получателям

Пусть $F$ — размер файла, $n$ — число получателей. Если один источник отправляет каждому полную копию, объём его отдачи равен:

$$ V_0 = nF $$

При $F=100$ МБ и $n=100$ это 10 000 МБ. Сравним с идеальным случаем: источник отдаёт одну копию, а остальные 99 доставок выполняют держатели кэша.

ПредположениеОтдача источникаОтдача других участников
Источник напрямую обслуживает всех 10010 000 МБ0 МБ
Одна исходная копия и 99 повторных раздач100 МБ9 900 МБ

Исчезает концентрация нагрузки на источнике, а не трафик, нужный для доставки всех копий. Ретрансляция, повторы и поиск могут увеличить общий объём. Это не измерения Winny и не обещание стократного ускорения.

Пусть $u_i$ — скорость отдачи каждого из $k$ поставщиков, а $d$ — пропускная способность получателя. При параллельной загрузке концептуальная верхняя граница эффективной скорости $r$ такова:

$$ r \leq \min\left(d,\sum_{i=1}^{k}u_i\right) $$

Влияют также перегрузка, скорость диска и наличие нужных данных. Десять поставщиков на одном медленном канале не увеличивают его скорость в десять раз. Популярные файлы накапливают копии; редкий файл может стать недоступным, когда отключится единственный держатель.

6. Шифрование не означает невидимость

Winny сочетала шифрование, ретрансляцию и кэш, чтобы затруднить распознавание публикатора. Нужно разделять четыре свойства.

СвойствоВопросДополнительные факторы
КонфиденциальностьМожет ли наблюдатель прочитать содержимое?Алгоритм, реализация, управление ключами
АнонимностьМожно ли связать действия с человеком?Соседи, время и объём трафика
ПодлинностьПришли ли данные от заявленного автора?Доверенные подписи или источники
Безопасность устройстваМожет ли открытие файла повредить компьютеру?Права запуска и защита от вредоносного ПО

Для прямой IP-связи нужен адрес назначения. Шифрование не скрывает сам факт соединения и всю информацию о его концах. Наблюдение отдачи из кэша само по себе не доказывает первичную публикацию, но сведения из разных мест и моментов могут сопоставляться.

Заявление об анонимности требует модели угроз: кто и что видит? Наблюдать одного соседа и множество соединений — разные возможности. Поэтому выражения «полная анонимность» и «принципиальная невозможность отследить» неуместны.

7. Утечки: отделить заражение от повторной раздачи

Утечки через Winny проще рассматривать в два этапа: вредоносная программа или другая причина раскрывает частные данные компьютера, затем сеть копирует их. IPA исследовала реагирование на реальные инциденты. Отчёт IPA

Типовая объяснительная цепочка: запуск подозрительного файла → сбор и публикация сведений вредоносной программой → получение другими узлами → повторная раздача из кэшей. Это не значит, что запуск Winny обязательно открывает весь диск. Поведение вредоносной программы и P2P-доставка различаются.

Удаление оригинала не обязательно удалит копии на чужих компьютерах. Если заражённое устройство читает открытые данные, взламывать шифр не требуется. Одно шифрование канала не закрывает этот путь.

Какие данные доступны для раздачи? Может ли пользователь это проверить? Как далеко распространяется ущерб от взлома? Можно ли отозвать ошибочную публикацию? Удобство и управляемость важны не меньше эффективности.

8. История и судебный вывод отдельно от оценки техники

ДатаСобытие
Май 2002 годаПервая пробная версия
Май 2003 годаПробная Winny 2 с целью создания P2P-форума
2004 годКанэко арестован по подозрению в пособничестве нарушению авторского права
19 декабря 2011 годаВерховный суд отклонил жалобу обвинения, оправдание разработчика стало окончательным

Форум Winny 2 был приложением поверх распределённой доставки. Кластеризация поиска сама по себе форумом не являлась. Распределение не гарантирует подлинность сообщений, вечное хранение или устойчивость к любому удалению. GLOCOM

Суд рассматривал, являлось ли предоставление программы преступным содействием нарушениям пользователей при конкретных обстоятельствах дела. Верховный суд не признал уголовной ответственности разработчика в этом деле. Он не легализовал любой файлообмен и не установил всеобщий иммунитет разработчиков. Решение

9. Какие вопросы проектирования остаются

«Новаторское, значит безопасное» и «был вред, значит распределение бесполезно» — слишком грубые оценки. Поиск, доставка, приватность и управление являются разными целями.

Разделение метаданных и содержимого, повторное использование копий и связь похожих интересов экономят ресурсы. Но больше копий — сложнее отзыв; больше посредников — иные задержки и точки наблюдения. Выгоды и издержки возникают из одних механизмов.

Задайте современным системам пять вопросов: Как находится первый узел? Где выполняется поиск? Кто передаёт содержимое? Что и от кого скрыто? Кто контролирует данные после публикации? Winny даёт конкретный пример для раздельного рассмотрения этих вопросов.

Источники

comments powered by Disqus