Обновление

Привет, ол! Наверняка, многие из вас заметили, что в последнее время попытки контроля Интернета становятся все сильнее и сильнее, примеров этому множество - от закрытия torrents.ru без суда и следствия (а они сотрудничают с правообладателями!!) до демонстрационных отловов различных хакеров, чтобы другие сидели потише.

Ага.

Черт возьми.

Предлагаю организовать и начать развивать нашу новую (национальную, хе-хе) систему обмена данными, которая будет развитием существующих торрентов, эмулей и прочего.

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

Будьте осторожны - много текста без картинок.



Основные текущие проблемы сети

  1. Много дублированного контента
  2. Контент не всегда проверен и часто является вирусным.

  3. Несколько разных форматов контента, разбросанных по сети (часто мы находим то, что нам нужно, но не в том формате, который нам хотелось бы)
  4. Для более-менее быстрого прыжка все равно необходим трекер, и если он перестает работать, то скорость начинает падать.

    (Лично DHT обычно довольно быстро приводит к сбою моего маршрутизатора и поэтому отключается на всех домашних машинах)

  5. На данный момент распространять нелегальный контент на торрентах не так-то просто.

    И часто закрывают его полностью

  6. Нет возможности автоматического обновления торрентов (например, для сериалов это очень важно)
  7. Сложность инициации раздачи контента без использования трекера (если я просто захочу передать файл другу по P2P, то у меня это просто не получится)


Что мы можем с этим поделать?

Просто попробую предложить что-то свое, но буду рад любым дополнениям к моим мыслям.

Ведь может я и не прав в корне, да?)

Общая идеология
На данный момент (это пока только идея и все может кардинально измениться) бытует мнение, что протокол XMPP очень хорош и использовать его для взаимодействия клиентов и серверов + использовать какую-нибудь (ну скорее всего BitTorrent) технологию обмена данными напрямую.

Соответственно, что мы имеем в основе:

  1. набор серверов, которые могут обмениваться информацией друг с другом
  2. набор клиентов, которые могут обмениваться информацией с любым из серверов и с любым из клиентов (но через сервер)
  3. сама информация может быть абсолютно любой
Для азов этого хватит за глаза и уши — мы можем реализовать практически все, что душе угодно, поэтому попробуем решить задачи с помощью этого инструментария.



Проблема 1 – дублирующийся контент
Здесь я предлагаю просто посидеть и подумать о структурировании рук и так далее.

На данный момент всё хранится на рут трекере и хранится во многих других местах, например в ББ кодах и т.п.

, а для машин это зачастую не очень удобно) При этом они всё равно требуют заполнения вне формы при создании раздачи на рут трекере.

Так почему бы не пойти еще дальше и не сохранить структуру вместо простого текста?

Проблема 2. Контент не всегда проверяется и часто бывает заражен.

Для этого я считаю достаточным ввести цифровые подписи для различного контента (в основном .

torrent-файлов и т.п.

).

По этой подписи можно понять, какой человек в сети ее проверял и собственно, в случае чего, задать ему вопросы.

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

Для защиты от вирусов есть следующая идея — просто сделать ботов, которым вы будете отправлять контент на проверку на вирусы и они подпишут этот контент, если все пройдет проверку.



Проблема 3. Множество разных форматов контента, разбросанных по сети.

Когда вы входите в «Доктор Хаус» в строку поиска на рут трекере попадаешь просто сто разных раздач.

это печально и приходится сидеть и выбирать что тебе будет удобно и ещё смотреть заголовок, вроде бы хорошего качества, но потом оказывается, это не тот сезон, но вводить в поисковую строку еще и «3 сезон» не всегда хорошо — можно опять что-то пропустить.

Вам просто нужно создать один дистрибутив для всего и иметь возможность выбирать нужный вам .

torrent-файл в одном месте и не рыться во всем этом.

Можно поставить рядом много разных инструментов – какие субтитры нужны, какой перевод, какое время года, какое качество картинки и т.д. Для того, чтобы иметь возможность объединять раздачи, нужно просто подписать их все по отдельности - когда есть какая-то раздача, а потом появляется больше контента, то он добавляет к существующему свой файл и сам становится на модерацию и этот новый контент(а не вся раздача) будет иметь пометку "не проверено" (или как там лучше) до тех пор, пока его не подпишет модератор и так же, как и в пункте 2. нужно просто подписать все это отдельно и реализовать функционал от шаг 2 отдельно.

Выглядит неплохо.



Проблема 4 - Для более-менее быстрой загрузки все же необходим трекер
Здесь все сложнее.

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

Для этого нам понадобится следующий функционал:

  1. Получение подходящего трекера для распространения с почти произвольного другого трекера
  2. Редирект с одного трекера на другой
Первый механизм нужен для того, чтобы понимать, через что подключаться, когда трекер выходит из строя, а второй, если текущий трекер работает, но не хочет обрабатывать этого клиента.

Со вторым все просто и понятно — просто при анонсе вернуть что-то вроде «редирект на ****» и все.

Но для первого требуется специальная настройка сервера — нужно создать какую-то сеть серверов (пусть будет нексус), желательно, чтобы они были географически удалены.

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

Если вдруг трекер перестанет отвечать, то клиенты уйдут по списку этих серверов и куда-нибудь подключатся.

В это время происходит обмен данными внутри сети и определяется, кто теперь будет реально распространять контент (это произойдет очень быстро — сеть маленькая и «договориться» легко, но для реализации можно придумать какую-нибудь эвристику и придумать несколько простых и однозначных правил для определения преемника умершего трекера), а потом после того, как они примут решение, всех перенаправляют на этот новый трекер.

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



Проблема 5 – Не так-то просто скачать торрент
Здесь также важно сохранить анонимность и сделать эту сеть более распределенной.

Здесь предлагается это сделать через усложнение иерархии, но усложнение должно быть таким, чтобы оно только усиливало сеть, а не ослабляло ее.

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

Да, есть проблема с нагрузкой, но если в нексусе 20 серверов, то такой проблемы, наверное, никогда не будет. Если окажется, что нагрузка слишком большая, то всегда можно поднять сервер поддержки и перенаправить на него часть клиентов и т.д. Для идентификации сервера на предмет его участия в нексусе будут использоваться цифровые подписи и т.п.

Это защитит сеть от внешних воздействий.

А дочерние вспомогательные серверы могут иметь другой ключ и соответственно при создании нексуса все обмениваются парой ключей - от основного сервера и от вспомогательных.

Вспомогательных может быть сколько угодно, но основной только один.

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

По сути, вспомогательные серверы — это просто кеширующие прокси.

Но в целом их потребность весьма иллюзорна.



Проблема 6 – Нет возможности автоматически обновлять торренты
Это очень легко реализовать с помощью ответа на объявление, так что не будем на это отвлекаться.



Проблема 7 — Сложность инициировать раздачу контента без использования раздачи на трекере
Для этого можно просто реализовать для каждого пользователя свой раздел, на раздачи которого он сможет давать ссылки, которые невозможно открыть без, например, сгенерированного пароля.

В принципе, здесь тоже нет ничего особенно сложного – трекеры всегда существуют и будут работать.

В принципе, можно даже не хранить всё на серверах, а сделать трекер прямо в клиенте — чтобы пользователи могли делать запросы к этому клиенту через XMPP-сервер, используя эти приватные раздачи.



И это все идеи?

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

В дополнение ко всему вышеперечисленному, есть масса вводных материалов.

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

Что касается интерфейса, я хочу сделать единый базовый интерфейс и не хочу, чтобы это был просто браузер.

У браузера слишком мало возможностей для реального обмена файлами.

И как следствие этого — иметь некую иерархию нексусов, чтобы «весь Интернет» был виден как на ладони.

Например, деление по территориальному признаку, по направлениям (ИТ, музыка и т.п.

) и т. д. А в самих нексусах тоже можно создать свою иерархию и т. д. Я даже думаю, что было бы интересно с этого начать.

А может быть и для того, чтобы в иерархии участвовали не нексусы, а сами трекеры.

Вполне вероятно, что вам придется сделать что-то вроде DNS с выдачей имен в этой иерархии.

А вообще тут уже надо много думать об этом, как это организовать, чтобы не было киберсквоттинга и т. д. Создать возможность создавать закрытые сообщества без собственного трекера.

Но здесь становится проблемой безопасность - на сервере есть вся информация и он в принципе может все отправлять другим участникам сети.

тут можно использовать механизм - "трекер в клиенте" с синхронизацией участников сети по зашифрованный канал.

В общем, много-много хорошего.



Хорошо.

Что дальше?

В общем, предлагаю собрать небольшую команду и начать все это создавать.

Если не мы, то другие.

Люди уже суетятся по поводу раздачи разных вещей (например, диаспора).

Все пригодится.

  • UI-программисты/верстальщики — без вас мы не сделаем хороший UI, каким его видят эксперты по юзабилити и дизайнеры!
  • Серверные программисты – без вас мы не сможем создать ничего надежного!
  • Дизайнеры – без вас мы бы никогда не смогли создать красивую систему, которой было бы приятно пользоваться всем!
  • Эксперты по юзабилити/UI-дизайну – без вас нам не сделать удобное и грамотное приложение!
Жду всех в комментариях.

Теги: #торренты #Интернет #контроль #свобода #информационная безопасность

Вместе с данным постом часто просматривают: