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

| Что это | Слой поверх транспорта, а не самостоятельный протокол |
|---|---|
| Маскировка под протокол | Похоже на распространённый трафик; узнаётся по мелким расхождениям с оригиналом |
| Рандомизация байтов | Убирает постоянный шаблон; сам по себе поток без структуры нетипичен |
| Туннель внутри распространённого протокола | Наибольшая правдоподобность, наибольшие накладные расходы |
| Типичная цена по объёму | От 3 до 25% дополнительных байтов в зависимости от подхода |
| Типичная цена по задержке | От 1–2 мс до нескольких десятков миллисекунд |
| Срок жизни | Ограничен: любой устойчивый признак со временем описывается |
Задача слоя — убрать или заменить то, по чему поток опознаётся: постоянные байты в начале, фиксированные длины сообщений, характерный ритм обмена.
Чем распространённее протокол, под который маскируется поток, тем менее выделяющимся он получается. Редкий образец сам по себе привлекает внимание.
Дополнительные заголовки, выравнивание длин пакетов и искусственные паузы стоят объёма и задержки. Бесплатной маскировки не существует.
Любой устойчивый признак рано или поздно описывается и распознаётся. Подходы обновляются, и ни один не рассчитан на десятилетие.
В настройках клиентов и в документации встречаются четыре названия одного и того же: «обфускация», «маскировка», obfuscation и scrambling. В интерфейсах зарубежных сервисов чаще всего написано именно obfuscation, а сама функция может называться Stealth, Camouflage или Obfuscated Servers — это маркетинговые имена одного технического приёма.
Путаницу добавляет то, что словом «обфускация» в программировании называют совсем другое: запутывание исходного кода, чтобы его труднее было прочитать. К сетевому трафику это отношения не имеет, хотя идея похожа — сделать структуру менее очевидной для стороннего наблюдателя.
Практический смысл знать оба названия простой: если в настройках клиента нет пункта «обфускация», ищите obfuscation, stealth или «маскировка» — почти наверняка функция есть, просто подписана иначе.
Любой протокол оставляет след в том, как выглядят его пакеты. WireGuard начинает каждое сообщение байтом типа из четырёх возможных значений, а его рукопожатие состоит из пакетов длиной ровно 148 и 92 байта. OpenVPN узнаётся по структуре начала сессии. Это не ошибки проектирования, а следствие того, что протокол должен быть однозначно разбираем.
Оборудованию для распознавания не нужна расшифровка. Достаточно посмотреть на первые байты, на длины пакетов и на порядок обмена в начале сессии. Правило, отличающее один транспорт от другого, часто умещается в несколько строк и работает на полной скорости канала.
Отсюда сама постановка задачи. Криптография защищает содержимое, но не форму. Обфускация занимается именно формой: она пытается сделать так, чтобы описанное выше правило не срабатывало или срабатывало на слишком широкий круг соединений, чтобы быть полезным.
Первое семейство — имитация распространённого протокола. Поток оформляется так, чтобы напоминать что-то массовое: обычный веб-трафик, видеозвонок, обмен с игровым сервером. Накладные расходы невелики, но имитация редко бывает полной, и различие обнаруживается по мелочам: не тому распределению длин, не тому ритму ответов, отсутствию побочных запросов, которые настоящий протокол делает автоматически.
Второе — рандомизация. Из потока убирают всё постоянное: нет фиксированного начала, длины пакетов варьируются, служебные поля выглядят случайными. Правило по сигнатуре здесь не срабатывает вовсе. Но появляется обратная проблема: в обычном интернете потоков без всякой структуры почти не бывает, и полное отсутствие признаков само становится признаком.
Третье — туннелирование внутри действительно распространённого протокола. Данные передаются не «похоже на», а буквально внутри настоящей сессии массового протокола, с настоящим рукопожатием и настоящим собеседником. Правдоподобность здесь наивысшая, а плата — двойные заголовки, дополнительный круг обмена и, как следствие, самые высокие накладные расходы из трёх семейств.
Объём. Дополнительный слой добавляет свои заголовки, а выравнивание длин пакетов означает передачу набивки, которая не несёт полезных данных. Диапазон широкий: лёгкие схемы укладываются в 3–5% лишних байтов, схемы с полным вложением доходят до 20–25%.
Задержка. Часть приёмов сознательно вносит паузы, чтобы ритм обмена выглядел естественнее. Другая часть добавляет круг рукопожатия. В сумме к пингу прибавляется от одной-двух миллисекунд у простых схем до нескольких десятков у сложных, и на голосовой связи это ощутимо.
Сложность эксплуатации. Дополнительный слой — дополнительное место, где что-то ломается. Диагностика усложняется: соединение может не подниматься из-за транспорта, из-за слоя маскировки или из-за их несовместимых версий, и различить эти случаи по внешним признакам трудно.
Механика простая. Любой приём оставляет собственный устойчивый след — пусть не в первых байтах, так в распределении длин, в паузах между пакетами или в поведении при нестандартном запросе. След описывается, описание превращается в правило, правило начинает работать.
Дальше следует ответ: подход дорабатывают или заменяют другим, и цикл повторяется. Исторически интервал между появлением заметного приёма и его надёжным распознаванием составлял от нескольких месяцев до пары лет. Ожидать большего от любой конкретной схемы не стоит.
Практический вывод для пользователя не в выборе «самого незаметного» способа, а в готовности инфраструктуры меняться. Ценность имеет не отдельный приём, а то, насколько быстро сервис способен перейти на другой, когда прежний перестал работать. Именно поэтому мы держим несколько транспортов и переключаем их на стороне сервера, не требуя ничего от пользователя.
Транспорт выбирается в настройках клиента одним пунктом, доплаты за него нет. Если Обфускация в вашей сети перестал подниматься, соседний протокол обычно работает — переключение занимает секунды и не требует переустановки.
Подписка оформляется в Telegram-канале сервиса · Безлимитный трафик · Поддержка круглосуточно