Строим VPN устойчивый к spyware

В предыдущей статье мы обсуждали некоторые меры, которые пользователь может предпринять против spyware, детектирующего факт использования VPN и сливающего полученные данные “Большому брату”.

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

Однако если немного подумать, то окажется, что техническое решение всё-таки есть. Да, оно относительно дорогое (минимальные расходы около 1000-1500 рублей в месяц), но оно существует!

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

Введение

Интернет гудит от того, что большой брат постоянно меняет стратегию и тактику борьбы со свободой распространения информации. В последние дни в дело пошли стукачи. Пусть они и цифровые, но именно поэтому работу свою они будут исполнять исправно – ведь договориться с ними нельзя.

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

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

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

Однако унывать не стоит! Решение есть. По крайней мере на сегодня и, может быть, на несколько ближайших лет оно существует. Прочитав данную статью, читатель сможет построить свой сервис VPN так, чтобы блокировки как можно дольше обходили его стороной.

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

Итак…

Что мы знаем о противнике?

Раз противник перешёл к использованию spyware на клиенте, то сразу возникает вопрос: “Почему это произошло?”

Первое и очевидное объяснение состоит в том, что:

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

Почему так? Потому что современные VPN-решения вроде xray умеют довольно хорошо маскировать свой трафик под безобидный, изображая обычные вебсайты. Кроме того, сегодня практически все соединения шифруются, а потому массово и надёжно вычислять VPN, просто наблюдая трафик у провайдера, крайне трудно.

  • Предположить наличие VPN у клиента? – Да.
  • Предположить высокую вероятность VPN у клиента? – Снова да.
  • Точно ответить на вопрос: “Использует ли клиент VPN?” – Нет.

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

Если и он не сработает, то позднее, вероятно, начнутся какие-нибудь административные и уголовные репрессии. Но пока (пока ещё!) мы живём в технологическом мире, мы можем собрать архитектуру, которая будет максимально устойчива к текущей модели давления – к наличию стукачей.

Итак, что мы знаем о противнике?

  • массово и надёжно вычислять VPN только по трафику он не может;
  • зато он может получать информацию от программ-стукачей на клиентском телефоне;
  • мало того, своё оборудование сейчас он сосредоточил именно здесь – у операторов мобильной связи.

Из этого следует простой вывод: если бы не spyware, то эту войну граждане, пожалуй, уже выигрывали бы.

Таким образом мы можем сформулировать:

Требования к устойчивому VPN

Чтобы VPN был устойчив к стукачеству:

  1. Его работоспособность должна перестать зависеть от компроментации точки выхода.
    Ну знает большой брат выходной IP – на работу это влиять не должно!
  2. Он должен быть устойчив к мониторингу трафика сотовыми операторами. Ведь именно здесь и осуществляется выявление множества VPN-узлов.
    Здесь, как было показано выше, большой брат этот раунд уже проиграл.

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

Давайте попробуем устранить этот недостаток.

Первое, что нам потребуется, – это стационарный VPN-узел внутри суверенного государства.

Зачем он нужен?

  • чтобы местный трафик маршрутизировался внутри суверенного государства и не терял в скорости;
  • чтобы у нас был полный контроль над программным обеспечением на этом узле (без стукачей);
  • чтобы предложения тарифицировать иностранный трафик, наказывая пользователя VPN рублём, отсекались уже на этом этапе.

Но я несколько забегаю вперёд, а потому давайте сперва рассмотрим:

Самый плохой вариант

Рисунок 1: наихудшая схема

Смысл его прост: клиент напрямую ходит через границу страны на один единственный внешний VPN-узел, а уже оттуда попадает в интернет.

Это дешёво, это просто, это удобно.

Но такая схема плоха, и плоха она сразу по двум причинам.

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

Конец игры. Но сообщество ответило на это усложнением архитектуры:

Устойчиво к анализу трафика, но не к spyware

Рисунок 2: двухкаскадная схема

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

В ней есть:

  1. телефон клиента;
  2. VPN-сервер в суверенном государстве: MY.VPN;
  3. VPN-сервер за пределами суверенного государства: FREEDOM.VPN;
  4. интернет, в который мы пытаемся попасть.

В такой схеме MY.VPN принимает на себя две роли.

  • Первая: маршрутизация трафика к местным ресурсам (например, госуслуги) прямо внутри суверенного государства.
  • Вторая: передача всего внешнего трафика через FREEDOM.VPN в сторону claude.com, chatgpt.com, youtube и прочих ресурсов, живущих по ту сторону границы.

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

Но есть проблема. Эта схема по-прежнему неустойчива к spyware на клиенте.

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

Этот агент видит, что запрос к нему пришёл от FREEDOM.VPN, и таким образом узнаёт адрес вашей внешней точки выхода. После этого стукач сдаёт этот адрес наверх по иерархии.

Далее приходит большой брат и закрывает доступ к FREEDOM.VPN для всех граждан суверенного государства без исключения.

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

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

Попробуем доработать наш VPN, чтобы получить

Система устойчивая к spyware на клиенте

Рисунок 3: трёхкаскадная схема

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

Итого, схема получится трёхкаскадной:

  1. телефон клиента, на котором мы заранее допускаем наличие spyware;
  2. VPN-сервер в суверенном государстве: MY.VPN;
  3. первый внешний VPN-сервер: FREEDOM.VPN1;
  4. второй внешний VPN-сервер: FREEDOM.VPN2;
  5. целевые сайты в интернете.

Особенности:

  • MY.VPN, как и прежде, маршрутизирует местный трафик внутри суверенного государства, а внешний – перенаправляет наружу.

Но теперь есть важная разница.

  • Точка выхода в мир – это FREEDOM.VPN2. Поскольку связь с ней осуществляется не напрямую, то не требуется, чтобы эта точка была доступна из суверенного государства.
  • Переход данных через границу осуществляется при помощи узла FREEDOM.VPN1, и информация о нём известна немногим: вам, узлу MY.VPN и больше никому.

Итого.

  • MY.VPN нам нужен для того, чтобы мобильный оператор видел, что дел вне суверенного государства у вас нет.
  • FREEDOM.VPN1 – секретный узел, о котором не проведает ни один стукач. А потому связь с ним условно защищена от взгляда большого брата.
  • FREEDOM.VPN2 – выходная точка, доступ к которой большой брат может запрещать, получая от этого моральное или иное удовольствие.

Итого: Такая схема устойчива к компрометации точки выхода.

Недостатки

  • Высокая стоимость. Приходится оплачивать три узла VDS.
  • Большой брат может прийти во все датацентры суверенного государства. Но здесь всё сложно: для этого ему придётся всерьёз анализировать трафик датацентров суверенного государства. А это уже задача другого масштаба, которая затронет работу множества больших сайтов, служб и порталов.

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

Дополнительно в недостатки можно записать следующее:

  • Иногда большой брат банит различные части интернета подсетями. Обнаружили, что адрес 1.2.3.4 содержит нечто подозрительное, и вместо того, чтобы добавить в блок адрес 1.2.3.4, добавили подсеть 1.2.0.0/16. Такое бывает.
    Но вряд ли это баг предложенной архитектуры.

Стоимость

Посчитаем цену вопроса.

  • сервер MY.VPN внутри суверенного государства: 400 – 500 рублей в месяц;
  • серверы FREEDOM.VPN1 и FREEDOM.VPN2 за пределами суверенного государства: по 2 – 7 долларов в месяц каждый.
  • Итого, в среднем около: 1500 рублей в месяц.

Дорого это или дёшево? Неприятно. Но за доступ к современным мировым наработкам в области ИИ, к базе мировых знаний – YouTube, к нормальному человеческому интернету и к возможности жить без постоянной оглядки на электронных стукачей это, на мой взгляд, вполне приемлемо.

Заключение

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

Ибо борьба – это процесс. Как известно, у самурая нет цели, есть только путь. Поскольку большой брат своей конечной цели не формулирует, то он в каком-то смысле – тоже самурай.

Что ж, пусть так.

Но ведь раз он нам брат, то всё-таки родственник? А значит, мы можем и мы должны ему соответствовать. Уж в упорстве – точно.