Народный

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

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 — необходимое, но не достаточное условие маскировки.

Источники

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

  • DPI — общий контекст.
  • ТСПУ — конкретный пользователь JA3 в РФ.
  • VLESS Reality — основной потребитель uTLS-эмуляции.
  • Обфускация — комплекс техник, включая JA3-spoofing.