Технологии цензуры
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 — частный случай.
Источники
- RFC 8446 §4.2.4 — TLS 1.3 padding extension.
- AmneziaWG protocol description — параметры Jc/Jmin/Jmax/S1/S2.
- DAITA whitepaper, Mullvad — defense against AI traffic analysis.