Шифрование трафика в Direct Connect, ч.1

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

История


Грешить Интернетом я начал с 2004 года, а соблазном на первых порах выступила местная локальная сеть. Точнее, программа под названием DC++ 0.401, магическим образом дававшая доступ к файлам, которыми делились другие абоненты той же локалки. Для этого нужно было подключиться к одному или нескольким узлам файлообменной сети, называемым хабами. Сами хабы держали на своих компьютерах местные энтузиасты.
«DC++» это название клиента. Протокол называется «Direct Connect». DC хабы. DC клиенты.
В этом была своя прелесть. Вот ты вне сети, а вот уже и внутри, среди людей, совершивших примерно те же действия, что и ты ранее. Удивительно, правда?

Скоро выяснилось, что то же самое можно, в принципе, делать не только в пределах локальной сети, но и сквозь Интернет… Общаться, дружить, ругаться, договариваться, создавать свои ресурсы, продвигать их, улучшать, пробовать другие клиенты, искать дыры и уязвимости, заниматься промышленным шпионажем, связываться с разработчиками и т.д. и т.п.


Тёплый ламповый DC++ v. 0.401

В-общем, DC с его простыми функциями общения и обмена файлами с успехом служило социальной сетью тех времён. И человеческое лицо по ту сторону экрана проглядывало настолько, насколько ты сам хотел его увидеть.

Прошли годы. Локальные хабы сдулись и издохли. Под натиском Фейсбука, ВКонтакте и торрента DC съёжилось до менее чем пяти сотен публичных хабов на старом NMDC протоколе и десятка (sic!) на протоколе Advanced Direct Connect.

Начало


Как уважаемые читатели уже знают, весь трафик россиян сохраняется до поры до времени. Дарить его в открытом виде — негигиенично, но именно это делают пользователи Direct Connect.

Итак, что требуется? Во-первых, шифровать общение DC клиента с хабом. Во-вторых, шифровать общение клиентов между собой.

И вот тут начинаются проблемы на всех уровнях этой простой и столь похожей на человеческое общество цифровой иерархии.

Хабы


Внезапно, подходящих хабов не обнаруживается. На старом NMDC протоколе их нет физически. ADCs же хабы существуют примерно с 2008 года, но погоды не делают, ибо так и остались малютками. Стало быть, такой ресурс придётся развернуть самостоятельно из уже существующего ADC хаба.

Клиенты


Программная поддержка TLS в DC клиентах есть уже давно, но, поскольку не было кейсов её применения, в этот раздел настроек тоже никто особо не заглядывал. А зря!

Перевести существующий ADC хаб на шифрование несложно. Сгенерировать самоподписанный сертификат, скормить его движку, выбрать «политику» TLS.

Но дело в том, что шифрованное соединение с хабом устанавливается при использовании ссылки вида adcs://hub.address.com:port

Настройка же «политики» TLS состоит в том, чтобы или одобрять обычные соединения (то есть переход по ссылке вида adc://hub.address.com:port), или перенаправлять такого пользователя куда-нибудь (например, на «правильный» адрес).

#tls_version = 1.0

tls_private_key="/etc/uhub/babylon.aab21pro.org.key"
tls_certificate="/etc/uhub/babylon.aab21pro.org.crt"

tls_enable=yes
tls_require=yes
tls_require_redirect_addr=adcs://babylon.aab21pro.org:412
Пример конфигурации TLS для uHub

Первое означает, что к хабу смогут подключиться пользователи с клиентами, которые не умеют TLS версии выше 1.0 (или вообще не умеют), что создаст проблемы; а второе — что посещаемость упадёт как минимум на треть.
*** SSL Error 1: tlsv1 alert protocol version
Такое сообщение при попытке соединения с ADCs хабом отображает клиент, умеющий только TLS v.1.0

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

Надо понимать, что эта статистика получена по́том и кровью опытным путём именно для ADC хаба, с которым не могут работать слишком уж старые клиенты. NMDC хаб после такого перехода просто перестанет существовать как ресурс, ведь понадобится и фактически сменить адрес, и потребовать у пользователей замены клиентов на более современные. Кстати, почему они не сделали этого раньше?..

Админы


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

Администраторам и владельцам крупных DC хабов на данный момент интересно только количество пользователей онлайн и что с этого можно поиметь. Пользователи покупаются и продаются; отсутствует культура взаимодействия между админами и пользователями, отсутствует сообщество. Отсутствует, если хотите, мораль, вместе с ней этика и понятие нормы, а возникающие проблемы решаются по понятиям. А Вы помните буквальный перевод слова server?..

Вот и получается феодальная раздробленность. Выгоднее (для кого?) оказывается разрешать всё всем (например, использовать устаревшие 10 и более лет назад клиенты с известными уязвимостями), чем выступать гарантом чего бы то ни было.

Пользователи


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

Не добавила в своё время DC популярности и необходимость проброса портов на роутере и знание «качества» своего IP-адреса. Процедура нетрудная, но по сей день вызывающая проблемы.

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

Итоги


Мы рассмотрели теорию и проблемы перевода уютного файлообмена в рамках Direct Connect на использование современного шифрования, необходимого в наши дни. Как видите, для этого пришлось указать на изъяны взаимодействия юзер <=> программа-клиент <=> хаб <=> администратор и придумать его заново.

Во второй части статьи планируется рассмотреть практику выбора и настройки DC клиента для работы на ADCs хабе.
Поделиться публикацией

Комментарии 17

    0
    DC++ раньше был хорошим решением для локальных сетей (особенно с целью экономии трафика Интернет); но улучшение качества доступа в Интернет (скорость и простота подключения, потоковое видео и т.д.) убило это направление, и хабы DC++ прекращают свое существование (независимо от всяких шифрований, версий TLS и пр.) Мы тоже в своем студенческом городке уже неск. лет как отказались от хабов DC++ (у нас был свой сервер), и уже даже возможность передачи данных по локальной сети отключили на уровне коммутаторов: есть только прямое соединение пользовательских устройств с нашими серверами; а это дополнительная защита от вирусов, местных недохакеров и некорректных подключений к сети устройств пользователями.
      0
      DC хабы. DC клиенты. Специально же упомянул об этом в статье!

      Что касается студенчества, то насельниками моего хаба в первые годы его существования внезапно явились студенты из Кейптаунского университета. А всё потому, что в Фейсбуке какая-то девушка возьми да напиши, что он работает у них на кампусе (: До сих пор иногда заходят.
        0
        Я просто FTP-сервер в локалке поднимал, расшаривая свой медиаконтент.
          0
          У ФТП была проблема с именами файлов в русской кодировке.
        0

        Нишевые "субкультурные" DC++ хабы до сих пор существуют. Например, сообщества "бутлеггеров", делящиеся друг с другом собственными аудио/видеозаписями концертов любимых исполнителей.

          0
          Их уже вытесняют субкультурные сайты, группы в соцсетях и облачные хранилища.
            0
            Это, скорее, дополнение для более-менее realtime-общения.
            Файловый обмен пока ещё за DC++ хабами и профильными торрент-трекерами. Плюс хабов — нет ограничений на шаринг репертуара тех или иных исполнителей, которые практикуют на некоторых трекерах.
              0
              Как человек, регулярно шерстящий хаблисты, ответственно заявляю, что хабы, посвящённые аниме, упорно продолжают существовать.
                0
                В аниме-хабах менее 200 человек суммарно. Самый большой русскоязычный animehub.ru был недоступен на протяжении очень длительного времени, из-за чего там сейчас максимум 60-70 человек. Домен популярной сети хабов otaku-anime.net перекупил владелец другого хаба, не-аниме тематики.
                  0
                  Тем не менее, это хорошая иллюстрация многолетнего присутствия субкультуры в DC.
                  P.S. Сам я не анимешник.
            0
            Кроме Babylon, ADCS никто и не использует, и вообще ADC-хабов крайне мало, на пару порядков меньше, чем NMDC. Хотел недавно сделать свой хаб, нашел только два более-менее приличных хаба с поддержкой ADC, но они довольно нишевые.

            С клиентами тоже не всё хорошо — в EiskaltDC++ перестает нормально работать раздача, если использовать TLS. Методом проб и ошибок выяснилось, что проблема в сжатии трафика.
            Некогда очень популярный клиент FlylinkDC++ теперь подгружает списки «продвигаемых» хабов и автоматически подключает пользователя к ним, подгружает черный список слов в сообщениях: etc.fly-server.ru/etc/flylinkdc-config-r5xx.xml

            Для Windows остается AirDC++, ApexDC, для Linux — AirDC++ Web, EiskaltDC++, для macOS есть только EiskaltDC++, в виде исходников.
              0
              Как же приятно увидеть отклик от целевого пользователя! Это за последние годы редкость, поверьте.

              ADCs потому мало кто и использует, потому как, чтобы его использовать, нужно начать решать проблемы, которые копились десятилетиями; статья как раз об этом. Строго говоря, как раз ADC должен был стать тем, чем не следовало бы пытаться стать NMDC.

              Про клиенты хотелось бы писать отдельно после дополнительного иследования, ибо есть там и факапы, и интересные фичи. Кстати, я так и не уразумел, ядро какой именно версии DC++ использует EiskaltDC++? Уж не 0.7* ли?

              С FlylinkDC++ ситуация куда более серьёзная. Стоит ли посвятить этому отдельную небольшую статью?
                0
                Кстати, я так и не уразумел, ядро какой именно версии DC++ использует EiskaltDC++? Уж не 0.7* ли?
                Я тоже не нашел, но старое. Ни ядро, ни саму программу почти не обновляют, только временами исправляют проблемы совместимости с новыми версиями необходимых библиотек.

                С FlylinkDC++ ситуация куда более серьёзная. Стоит ли посвятить этому отдельную небольшую статью?
                Напишите.
                0
                Разработчик EiskaltDC++ сообщает, что мои слова об отсутствии сборок для macOS не соответствуют действительности. Сборки можно скачать здесь: sourceforge.net/projects/eiskaltdcpp/files/macOS/devel
                0
                Технология требует хабов, их нужно где-то найти. А рядовой пользователь даже слов таких не знает. Так что эту технологию я бы рассматривал как промежуточный шаг к децентрализации, но не более того; будущее за полностью децентрализованными технологиями, которые вообще ничего не требуют, кроме запуска клиента — на это пользователи все-таки способны:) Вся информация должна искаться через DHT.
                  0
                  Во все клиентах есть вкладка с публичными хабами, на которой загружаются хаб-листы из разных источников. Выглядит так:

                  image

                  Некоторые клиенты сразу идут с предустановленными начальными хабами.
                  В DC есть чат, который достаточно активно используется пользователями, есть меню хаба, через которое можно сделать список релизов, регистрацию, какой-то интерактив. DHT в современных клиентах тоже есть, но только для TTH-хешей, не для поиска файлов по имени или типу.
                • НЛО прилетело и опубликовало эту надпись здесь

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

                  Самое читаемое