Технологии цензуры
JA3 / JA4 — TLS fingerprinting
Метод идентификации TLS-клиента по характеристикам ClientHello. Один из основных инструментов DPI для классификации VPN и proxy-трафика.
Определение
JA3 — это алгоритм fingerprinting’а TLS-клиента, опубликованный командой Salesforce в 2017 году. Он формирует MD5-хэш из определённых полей TLS ClientHello: версии TLS, списка cipher suites, расширений, эллиптических кривых и форматов точек. JA4 — модернизация 2023 года, разработанная FoxIO, с более устойчивым форматом и дополнительными данными.
Идея простая: разные TLS-клиенты (Chrome, Firefox, OpenVPN client, curl, кастомные Go-приложения) формируют ClientHello по-разному. Даже если они шлют его на один и тот же домен, по полям заголовка можно различить, кто конкретно стучится.
Как формируется JA3
JA3-строка собирается из ClientHello в формате Version,CipherSuites,Extensions,EllipticCurves,EllipticCurvePointFormats, разделённых дефисами внутри полей и запятыми между полями. Из этой строки берётся MD5 — это и есть JA3-hash.
Пример Chrome 122 на Windows:
JA3 string:
771,4865-4866-4867-49195-49199-...,0-23-65281-10-11-35-16-5-13-18-...,29-23-24,0
JA3 hash: cd08e31494f9531f560d64c695473da9
Тот же hash будет у любого Chrome 122 на Windows независимо от пользователя и сайта, к которому он стучится. Это и сила, и слабость JA3: легко собрать базу известных клиентов и легко подделать.
JA4 — что улучшилось
JA4 — это эволюция JA3 от FoxIO (2023), решающая несколько проблем оригинала. Ключевые отличия:
- Сортировка cipher suites и extensions перед хэшированием. JA3 чувствителен к перестановке (Chrome рандомизирует extension order с 2023 года, что ломает JA3). JA4 — нет.
- Структурированный формат. JA4 не один MD5, а строка вида
t13d1516h2_8daaf6152771_b186095e22b6, где видны TLS-версия, ALPN, количество cipher’ов. Можно анализировать частично. - JA4+ семейство: JA4S (server hello), JA4H (HTTP), JA4L (latency), JA4X (X.509 certificate).
В 2026 году JA4 постепенно вытесняет JA3 в коммерческих DPI и Threat Intel базах.
JA3 / JA4 и DPI
Российская ТСПУ использует JA3/JA4 для классификации VPN-клиентов как минимум с 2022 года. Конкретно:
- Database known-bad fingerprints. ClientHello, характерные для OpenVPN GUI, Cisco AnyConnect, дефолтных xray-конфигов — известны и флагятся.
- Detection by anomaly. ClientHello без SNI или без extension
signature_algorithms(что у браузеров всегда есть) — индикатор не-браузерного клиента. - Cross-correlation. Если IP отправляет ClientHello с одним JA3 и payload-трафик с подозрительным entropy-паттерном — флагится как VPN.
Это означает, что для устойчивого VPN-обхода критически важно подделывать JA3 под легитимный браузер.
uTLS — спуфинг JA3 в коде
Стандарт спуфинга JA3 в open-source VPN — библиотека uTLS (refraction-networking/utls). Она:
- Эмулирует ClientHello побитово как Chrome, Firefox, Safari конкретных версий.
- Поддерживает преcеты
HelloChrome_120,HelloFirefox_115,HelloIOS_17. - Используется в xray-core, sing-box, hysteria, marzban — везде, где нужна TLS-маскировка.
Пример: VLESS Reality по умолчанию использует uTLS с chrome пресетом. Клиент шлёт ClientHello, идентичный Chrome, и DPI не может различить туннель от настоящего пользователя Chrome.
Поддерживать uTLS актуальным — задача разработчиков клиентов. Когда Chrome обновляется (новые cipher’ы, новые extensions), пресет в uTLS должен обновиться, иначе VPN-клиент выдаёт ClientHello «Chrome 120», а реальные Chrome уже 124-й версии — DPI это видит как аномалию.
Подделка vs детектирование — гонка
JA3 имеет фундаментальное ограничение: его легко подделать. Любой open-source VPN с uTLS делает это бесплатно. Поэтому DPI не может полагаться только на JA3 — нужны дополнительные сигналы.
В 2026 году ТСПУ комбинирует JA3 с:
- Объёмом трафика к данному «прикрытию» (microsoft.com получает мало трафика от обычного пользователя — спайки указывают на VPN).
- Геораспределённостью клиентов (если один IP-блок принимает много ClientHello от «Chrome 120» к одному и тому же домену — подозрительно).
- Анализом тайминга TLS-handshake.
JA3 — необходимое, но не достаточное условие маскировки.
Источники
- JA3 paper — github.com/salesforce/ja3 (Salesforce, 2017).
- JA4 specification — github.com/FoxIO-LLC/ja4.
- uTLS library — github.com/refraction-networking/utls.
Связанные термины
- DPI — общий контекст.
- ТСПУ — конкретный пользователь JA3 в РФ.
- VLESS Reality — основной потребитель uTLS-эмуляции.
- Обфускация — комплекс техник, включая JA3-spoofing.