Обфускация против шифрования
Эти два слова часто употребляют так, будто они означают одно и то же. Это не так, и именно эта разница решает, какой протокол подойдёт для конкретной сети.
Они отвечают на разные вопросы
- Шифрование
- Отвечает на вопрос «может ли наблюдатель это прочитать?». Оно преобразует полезную нагрузку так, что восстановить её может только владелец ключа. Его гарантия математическая, хорошо изученная, и корректно реализованный современный шифронабор не является слабым местом ни одной реальной системы.
- Обфускация
- Отвечает на вопрос «может ли наблюдатель понять, что это такое?». Она придаёт форму тем частям соединения, которые шифрование оставляет видимыми — структуре рукопожатия, размерам пакетов, таймингу, метаданным, — чтобы поток не выделялся как принадлежащий определённому протоколу. Её гарантия эмпирическая и действует только против классификаторов, которые ещё не научились её видеть.
Эта асимметрия важна. Шифрование либо работает, либо сломано, и оно не ухудшается оттого, что кто-то пригляделся внимательнее. Обфускация — это состязание: она работает, пока другая сторона не обновит классификаторы, и поэтому её сопровождают непрерывно, а не выпускают один раз.
Разные противники
| Опасение | Шифрование | Обфускация |
|---|---|---|
| Кто-то читает ваш трафик в общем Wi-Fi | Решает это | Не относится к делу |
| Оператор сети записывает, какие сайты вы посещаете | Частично — имена хостов всё равно утекают | Помогает, убирая этот признак |
| Фильтр отбрасывает трафик, опознанный как VPN | Не помогает | В этом весь смысл |
| Оператор принципиально отбрасывает любой шифрованный поток | Не помогает | Помогает, если поток похож на разрешённый трафик |
| Кто-то скомпрометировал конечную точку, к которой вы подключаетесь | Не помогает | Не помогает |
Прочтите первый столбец сверху вниз — и картина ясна: шифрование про конфиденциальность от наблюдателя, обфускация про выживание перед привратником. Протокол, у которого есть одно и нет другого, отказывает вполне определённым и предсказуемым образом.
Как обфускацию делают на практике
Есть три основные стратегии, и они различаются по цене и по тому, надолго ли их хватает.
- Рандомизация
- Сделать трафик не похожим ни на что: никаких фиксированных заголовков, никакой узнаваемой структуры, равномерно случайные байты с первого пакета. Это ломает сопоставление по шаблону. И это отказывает против сети, которая блокирует всё, что не смогла опознать, потому что неклассифицируемый трафик — ровно то, что такая сеть отбрасывает.
- Имитация
- Сделать трафик похожим на конкретный разрешённый протокол, обычно HTTPS. Это выживает в сетях с запретом по умолчанию, но только если имитация достоверна на всех уровнях; частичная имитация заметнее, чем её отсутствие, потому что само расхождение становится сигнатурой.
- Туннелирование внутри настоящего протокола
- Не имитировать разрешённый протокол, а действительно его использовать, неся туннель внутри его подлинной сессии. Имитировать нечего, значит и ошибиться не в чем. Цена — накладные расходы и, как правило, пропускная способность.
Чего стоит обфускация
Ничто из этого не бесплатно, и о цене лучше говорить прямо, а не делать вид, что её нет.
- Пропускная способность. Набивать пакеты, чтобы скрыть их размеры, — значит отправлять байты, которые ничего не несут. Заворачивание туннеля во второй протокол добавляет заголовки к каждому пакету.
- Задержка. Дополнительные слои означают дополнительную обработку на обоих концах, а выравнивание ритма отправки — намеренный отказ отправлять пакеты сразу, как только они готовы.
- Хрупкость. Имитация должна поспевать за тем, что имитирует. Браузеры меняются; необслуживаемый слой обфускации сам превращается в характерный отпечаток.
- Сложность. Больше движущихся частей — больше мест, где ошибка реализации выдаст ровно тот признак, ради устранения которого этот слой и существует.
В нефильтруемой сети эти издержки не покупают ничего, и поэтому обфускацию нужно уметь выключать. Держать её включённой по умолчанию всюду — значит менять реальную производительность на защиту от проблемы, которой у вас может и не быть.
Что это значит на практике
- Определите, от чего вы защищаетесь. Защита сессии в недоверенной сети кафе — задача шифрования, и она уже решена любым приличным протоколом.
- Если трафик блокируют, а не читают, это задача обфускации, и выбор протокола здесь имеет большое значение.
- Предпочитайте подходы, согласованные на всех уровнях, тем, которые просто необычны. Необычность сама по себе признак.
- Держите простую быструю конфигурацию доступной для сетей, которые не фильтруют, и применяйте замаскированную только там, где она окупает свою цену.
Частые вопросы
Обфусцированный VPN безопаснее?
В криптографическом смысле нет — обфускация не добавляет конфиденциальности сверх того, что уже даёт шифрование. Она добавляет устойчивость к опознанию и блокировке. Если вас ничего не блокирует, это издержки без выгоды.
Замедляет ли обфускация VPN?
Обычно да, в той или иной мере. Набивка, дополнительные протокольные слои и намеренное выравнивание ритма расходуют полосу или добавляют задержку. Насколько — зависит от техники; туннелирование внутри настоящего протокола обходится дороже всего.
Можно ли обнаружить обфускацию?
Любую конкретную технику обфускации рано или поздно обнаружат, потому что это шаблон, а шаблоны выучиваются. Поэтому область непрерывно движется, и поэтому к заявлениям о вечной необнаружимости стоит относиться скептически.