Как выбирают транспорт: профили уязвимости вместо рейтинга
Вопрос «какой транспорт лучше» задаётся постоянно и не имеет ответа в такой формулировке. Не потому, что все одинаковы, а потому, что они уязвимы к разному. Транспорты различаются не силой, а тем, к чему именно они уязвимы, поэтому осмысленный выбор — это не победитель, а набор с непересекающимися режимами отказа.
Разберём, по каким осям они действительно различаются.
Пять осей, а не одна шкала#
Устойчивость транспорта — не число. Это набор свойств, и транспорт, сильный по одной оси, обычно слаб по другой.
| Ось | Вопрос, на который отвечает |
|---|---|
| Содержимое | есть ли постоянные байты, по которым опознаётся протокол |
| Форма потока | выдают ли размеры, направления и паузы |
| Состояние | использует ли различия в реализациях протоколов |
| Зондирование | что получит посторонний, постучавшийся в порт |
| Метаданные | что видно об адресе, имени и разрешении имён |
Транспорт с идеальным показателем по первой оси может провалиться по второй — и это не редкость, а типичный случай.
Четыре семейства#
Маскировка под TLS. Внешне соединение выглядит обычным защищённым соединением к правдоподобному сайту. Неавторизованный запрос обрабатывается так, как обработал бы настоящий веб-сервер.
Сильно против сигнатур и против зондирования. Слабо против анализа отпечатка рукопожатия и формы потока: правдоподобное рукопожатие не отменяет того, что дальше видно вложенное защищённое соединение.
Случайный поток. Цель — отсутствие опознаваемой структуры. Ни заголовков, ни фиксированных полей.
Сильно против поиска по содержимому и, при правильной реализации, против зондирования. Слабо против модели «неизвестное и высокоэнтропийное — подозрительно», разобранной отдельно.
UDP-семейства. Скорость и низкие накладные расходы; часть решений умеет менять порт на ходу.
Отдельная оговорка, о которой узнают поздно: UDP не выводит из-под объёмного ограничения. Уточнение к описанию механизма прямо указывает, что лимит применяется и к TCP, и к UDP. Плюс QUIC разбирается наблюдателями — имя из начального пакета извлекается.
Мимикрия под веб. Транспорт не имитирует разрешённый протокол, а является им: за ним стоит настоящий веб-сервер, и часть трафика — настоящий веб-трафик.
Самое дорогое в развёртывании: нужен домен, сертификат, работающий сайт. Взамен даёт то, чего не даёт остальное — цену ошибки для блокирующего.
Сводка: где каждое семейство слабо#
содержимое форма состояние зондирование метаданные
TLS-маскировка ✓✓ ~ ~ ✓✓ ~
Случайный поток ✓✓ ~ ~ ✓ ~
UDP-семейства ✓✓ ~ ✓ ~ ~
Веб-мимикрия ✓✓ ✓✓ ~ ✓✓ ~
✓✓ сильно ✓ средне ~ зависит от реализации и условий
Заметьте столбец «метаданные»: он одинаков у всех. Ни один транспорт не скрывает адрес назначения. Репутация адреса — свойство размещения, а не протокола, и никакая маскировка её не меняет.
Ошибка сравнения: разные профили, не разная сила#
Показательный случай — вывод из портфеля двух транспортов одним решением.
| Транспорт | Против сигнатур | Против «неизвестного высокоэнтропийного» | Против зондирования |
|---|---|---|---|
| Случайный поток | сильно | слабо — это и есть тот класс | средне |
| Маскировка под TLS | сильно | неприменимо — это настоящий TLS | сильно при хорошем запасном пути |
Профили противоположны. Первый уязвим ровно там, где второй неуязвим по построению.
Отсюда правило, полезное при пересмотре набора транспортов: выводя транспорт, называйте, от чего он защищал. Иначе легко убрать единственное, что закрывало конкретный вектор, и не заметить этого — пока вектор не сработает.
Почему выбирать надо не один?#
Из всего сказанного следует практический критерий, который важнее выбора «лучшего». Если два транспорта уязвимы к одному и тому же, второй не даёт запаса — он даёт копию.
Если два транспорта уязвимы к одному и тому же, второй не даёт запаса — он даёт копию. Механизм, который сработает против первого, сработает и против второго, и переключение не поможет.
ПЛОХОЙ НАБОР
транспорт A ─┐
├── оба уязвимы к анализу формы потока
транспорт B ─┘ один механизм закрывает оба
ХОРОШИЙ НАБОР
транспорт A ── уязвим к анализу формы
транспорт B ── уязвим к классификации энтропии
механизмы независимы, переключение имеет смысл
Критерий формулируется так: разнообразие режимов отказа важнее суммарной силы. Два разных транспорта устойчивее двух хороших однотипных.
Что не решается выбором транспорта#
Полезно назвать явно, чтобы не искать не там.
Репутация адреса. Известный адрес блокируется независимо от того, что по нему работает.
Позиция в сети. К чему применяются какие правила — свойство размещения, а не протокола.
Доставка настроек. Транспорт бесполезен, если конфигурацию нельзя обновить.
Поведение клиента. Массовый веер проб провоцирует ограничение при любом транспорте.
Вывод#
Рейтинга транспортов не существует, потому что ось не одна. Есть профили уязвимости, и они различаются по виду, а не по силе.
Отсюда два практических следствия. Первое: выбирайте набор, а не победителя, и подбирайте его так, чтобы режимы отказа не совпадали. Второе: при выводе транспорта называйте, от чего он защищал — иначе упрощение портфеля незаметно снимает защиту, которую никто не собирался снимать.
Термины#
- Профиль уязвимости - набор осей, по которым транспорт слаб или силён, вместо единой оценки силы.
- Режим отказа - конкретный механизм, из-за которого транспорт перестаёт работать.
- Разнообразие режимов отказа - свойство набора транспортов, при котором один механизм не выводит из строя сразу несколько.
FAQ: частые вопросы#
Какой транспорт самый устойчивый?#
Вопрос не имеет ответа в такой форме: осей несколько, и сильный по одной обычно слаб по другой.
Зачем держать несколько транспортов?#
Чтобы механизм, сработавший против одного, не сработал против остальных. Два однотипных транспорта запаса не дают.
Что учитывать при выводе транспорта из набора?#
Назвать, от чего он защищал. Иначе упрощение набора незаметно снимает защиту, которую никто не собирался снимать.
Что читать дальше#
- Почему «выглядит случайно» не значит «выглядит нормально»
- Активное зондирование: почему сервер должен молчать одинаково
- Цепочки и многохоповые схемы
- Пройдите маршрут от настройки до диагностики в VPN-гайдах GigaTap.
- Выберите следующий шаг с помощью помощника VPN start.
- Импорт профиля под конкретное устройство — в хабе настройки клиентов.