Народный

Технологии цензуры

Padding — выравнивание длин пакетов в VPN

Добавление случайных байт к пакету, чтобы скрыть его реальный размер от DPI. Защищает от поведенческого анализа и fingerprinting'а по длинам, особенно на этапе handshake.

Определение

Padding — техника добавления переменного числа случайных байт к зашифрованному пакету, чтобы его длина перестала быть индикатором конкретного протокола или содержимого. DPI-системы (включая ТСПУ) активно используют длины пакетов как фичу для классификации — handshake-пакеты разных VPN-протоколов имеют узнаваемые фиксированные или близкие к фиксированным размеры. Padding ломает эту сигнатуру.

Зачем нужен

Классический пример — WireGuard. Первый пакет (HandshakeInitiation) всегда 148 байт ровно, второй (HandshakeResponse) — 92 байта. Это RFC-фиксированная структура, и одно правило в DPI ловит её без капли криптоанализа: «UDP, длина 148, magic в первых 4 байтах = WG handshake».

Padding в AmneziaWG и других обфусцированных протоколах добавляет в эти пакеты случайные N байт (или N junk-пакетов в обе стороны), и длина перестаёт быть стабильной. У TLS 1.3 есть собственное расширение padding (RFC 8446, §4.2.4) — обычно используется на ClientHello, чтобы фиксировать его длину на круглое число (например, 512 байт), но в антицензурных движках padding применяется агрессивнее.

Виды

  • Handshake padding. Случайная длина первого / второго пакета. AmneziaWG-параметры S1/S2 (header magic bytes) и Jc/Jmin/Jmax (junk packets) — частный случай.
  • Per-packet padding. Каждый data-пакет дополняется до случайной длины. Стоит overhead’а на bandwidth — реальные данные «разбавлены» мусором. Используется редко (в Tor + obfs4, в xray padding extension).
  • Burst padding. Группировка пакетов в фиксированные «всплески» по таймингу + размеру. Защита от поведенческого анализа.
  • Constant-rate padding. Самая мощная защита — клиент шлёт фиксированный объём в секунду независимо от реальных данных. Используется в DAITA от Mullvad.

Trade-off

Overhead. Per-packet padding съедает 5–20% bandwidth впустую — мусорный трафик тратит канал и CPU. Поэтому в VPN-движках padding обычно ограничен handshake-фазой, а на data-уровне применяется только в режимах против поведенческого DPI.

Latency. Burst- и constant-rate padding добавляют задержки (клиенту приходится ждать «окно» отправки). Для гейминга и VoIP это плохо. Для веба и стриминга — приемлемо.

Не панацея. Padding не маскирует количество трафика суммарно — если пользователь качает 10 GB через VPN, никакая обфускация длин не скроет, что соединение активно. Защита частична: ломается классификация по форме пакетов, но не по объёму.

Где встречается на практике

  • AmneziaWG. Параметры S1/S2 (header padding) и Jc/Jmin/Jmax (junk-пакеты).
  • VLESS Reality. Использует встроенный TLS 1.3 padding на ClientHello + xray xtlsRandomPadding для растяжки data-пакетов.
  • obfs4. Pluggable transport для Tor — добавляет padding к каждому пакету по случайному распределению.
  • DAITA (Mullvad). Constant-rate padding для WireGuard.
  • Hysteria 2. QUIC-стек с настраиваемым mtuDiscovery и padding-стратегиями.

Связанные термины

JA3 / JA4 — fingerprint, который TLS-padding частично размывает на ClientHello. ТСПУ — основной адресат padding-обфускации в РФ. Obfuscation — общий термин, padding — частный случай.

Источники