Статті й порівняння

JA3 і JA4: як TLS-рукостискання видає клієнта

Ще до першого HTTP-заголовка браузер починає TLS-рукостискання повідомленням ClientHello. У ньому перелічені версії TLS, набори шифрів і розширення, які підтримує клієнт, і різні програми складають його по-різному. JA3 і JA4 перетворюють його на короткий відбиток, який каже, що за клієнт підключається.

Перевірте свій браузер просто зараз

Перевіряю браузер…

Що є в ClientHello

ClientHello оголошує версії TLS, які приймає клієнт, його набори шифрів у порядку пріоритету, список розширень (імʼя сервера, підтримувані групи, алгоритми підпису, ALPN для HTTP/2 та інші) і їхні параметри. Chrome, Firefox, Safari, curl, бібліотеки Python і програми на Go дають різні комбінації, бо використовують різні TLS-бібліотеки й налаштування.

JA3

JA3 опублікували дослідники Salesforce у 2017 році. Він склеює версію TLS, набори шифрів, розширення, еліптичні криві й формати точок із ClientHello і хешує результат MD5. Та сама програма дає той самий хеш, тож JA3 став поширеним способом упізнавати шкідливі програми, сканери й скрипти незалежно від того, яким User-Agent вони представляються.

Чому JA3 перестав бути стабільним

JA3 зберігає розширення в тому порядку, в якому вони йдуть у повідомленні. У 2023 році Chrome почав перемішувати порядок TLS-розширень у кожному зʼєднанні, за ним пішли інші браузери. Тепер той самий браузер дає багато різних хешів JA3, і для браузерів JA3 став набагато менш корисним.

JA4

JA4, який FoxIO випустив у 2023 році, виправляє це: перед хешуванням набори шифрів і розширення сортуються, тож перемішаний порядок уже не важить. Перша частина JA4 читається людиною: протокол (TLS чи QUIC), версія TLS, чи надіслано імʼя сервера, кількість шифрів і розширень та перше значення ALPN. JA4 входить до ширшої родини, яка охоплює також HTTP-запити й відповіді сервера.

Як сайти використовують TLS-відбитки

Цінність у порівнянні. Якщо заголовок User-Agent каже Chrome на Windows, а TLS-рукостискання схоже на бібліотеку Python чи програму на Go, запит майже напевно не від цього браузера. Антибот-системи CDN і великих сайтів перевіряють це ще до завантаження сторінки. Налаштування HTTP/2 і порядок заголовків дають схожий відбиток на рівень вище.

TLS-відбиток каже, яка програма створила зʼєднання, а не хто користувач. Багато людей мають ту саму версію браузера, а отже й той самий JA4. Найкраще він працює разом із сигналами браузера, даними мережі й поведінкою.

Чи перевіряє це SpoofLens?

Поки ні. TLS-відбиток треба знімати там, де закінчується TLS-зʼєднання, а наш поточний хостинг цього не дає. Це заплановано в наступній версії на власних серверах. Сьогодні перевірка SpoofLens порівнює те, що браузер повідомляє в HTTP-заголовках і в JavaScript; якщо вам потрібен ваш JA3 чи JA4 вже зараз, у BrowserLeaks є окремий тест TLS-клієнта.

Часті запитання

Мій JA4 унікальний?
Ні. Він ідентифікує програму-клієнт і її налаштування TLS. Усі з тією самою версією браузера на тій самій платформі зазвичай мають однаковий.
Чи змінює VPN мій TLS-відбиток?
Ні. VPN тунелює зʼєднання, але не змінює ClientHello, який надсилає ваш браузер.
Чому ботів ловлять за TLS-відбитком?
Бо багато скриптів використовують HTTP-бібліотеки, чиє рукостискання зовсім не схоже на браузерне, хоча представляються браузерним User-Agent. Одне з іншим не сходиться.

Читайте також