Penjelasan TLS Fingerprinting dan Hash JA4
Mengapa pesan TLS Client Hello adalah tambang emas untuk identifikasi perangkat — dan bagaimana hash JA4 memberi kita fingerprint stabil yang bertahan melewati pembaruan browser.
Setiap koneksi HTTPS dimulai dengan TLS handshake, dan setiap TLS handshake dimulai dengan pesan Client Hello. Pesan ini memuat banyak informasi tentang klien yang terhubung — cipher suite, extension, curve yang didukung, algoritma tanda tangan — yang bervariasi secara signifikan antar browser, versi, dan sistem operasi. TLS fingerprinting menangkap informasi ini dan menggunakannya sebagai sinyal identifikasi.
Apa Isi Sebuah Client Hello?
Ketika sebuah browser terhubung ke server HTTPS, ia mengirim pesan Client Hello yang berisi: versi TLS yang didukungnya, daftar cipher suite yang bersedia digunakannya, extension TLS yang disertakannya (seperti SNI, ALPN, dan key share), elliptic curve yang didukungnya, algoritma tanda tangan yang diterimanya, dan metode kompresi yang ditawarkannya.
Setiap keluarga browser memiliki fingerprint yang khas. Chrome, Firefox, dan Safari semuanya mengirim urutan cipher suite yang berbeda, set extension yang berbeda, dan preferensi curve yang berbeda. Bahkan dalam keluarga browser yang sama, versi yang berbeda mungkin mengirim pesan Client Hello yang sedikit berbeda seiring cipher suite ditambahkan atau ditinggalkan.
Dari JA3 ke JA4
JA3 adalah hash TLS fingerprinting orisinal, diperkenalkan oleh Salesforce pada 2017. Ia menggabungkan versi TLS, cipher suite, extension, elliptic curve, dan format titik EC menjadi sebuah string lalu menghitung hash MD5. Meski terobosan, JA3 memiliki keterbatasan: ia menghasilkan satu hash buram yang sulit dianalisis, dan perubahan kecil pada bidang mana pun menghasilkan hash yang sepenuhnya berbeda.
JA4, diperkenalkan oleh FoxIO pada 2023, menyempurnakan JA3 dalam beberapa hal. Ia menghasilkan fingerprint terstruktur dengan tiga komponen: prefiks yang mudah dibaca manusia (seperti "t13d1715h2" — TLS 1.3, 17 cipher suite, 15 extension, HTTP/2), hash terurut dari cipher suite, dan hash terurut dari extension. Struktur ini membuat fingerprint JA4 dapat dianalisis sekilas sekaligus mempertahankan presisi yang dibutuhkan untuk identifikasi.
Mengapa TLS Fingerprint Penting bagi Device Intelligence
TLS fingerprint bernilai karena dikumpulkan sebelum JavaScript apa pun dieksekusi. Sebuah bot yang memalsukan user agent-nya, memalsukan rendering canvas-nya, dan menambal properti navigator-nya tetap mengirim pesan Client Hello asli dari library TLS apa pun yang sebenarnya ia gunakan. Jika Client Hello berkata "library crypto/tls milik Go" tetapi user agent berkata "Chrome 124," kita tahu ada sesuatu yang sedang dipalsukan.
Validasi silang ini sangat ampuh untuk deteksi bot. Sebagian besar framework otomasi — Selenium, Puppeteer, Playwright — menggunakan tumpukan TLS bawaan browser, sehingga TLS fingerprint mereka cocok dengan browser yang mereka kendalikan. Namun klien HTTP kustom, scraper berbasis Go, dan skrip Python yang memakai library requests semuanya memiliki TLS fingerprint khas yang langsung mengidentifikasi mereka sebagai klien non-browser.
Stabilitas TLS Fingerprint
Salah satu kekhawatiran pada TLS fingerprinting adalah stabilitas melewati pembaruan browser. Ketika Chrome menambah atau menghapus sebuah cipher suite, TLS fingerprint berubah. Dalam praktiknya, hal ini terjadi lebih jarang daripada yang mungkin Anda kira. Daftar cipher suite Chrome relatif stabil — perubahan besar terjadi sekali atau dua kali setahun, bukan pada setiap versi.
Format terstruktur JA4 membantu di sini. Prefiks yang mudah dibaca manusia tetap stabil melewati perubahan versi minor (jumlah cipher suite dan extension tidak sering berubah), sehingga bahkan ketika hash detailnya berubah, prefiks memberikan kesinambungan. Dalam sistem identifikasi multi-tier kami, data TLS fingerprint ditempatkan di Tier 2 — cukup stabil untuk berkontribusi pada identifikasi, tetapi diproses melalui pencocokan lintas sesi untuk menangani drift yang diperkirakan terjadi.
Pengumpulan di Sisi Server
Berbeda dengan sinyal sisi klien yang membutuhkan eksekusi JavaScript, TLS fingerprint dikumpulkan sepenuhnya di sisi server. Edge server kami memeriksa TLS handshake mentah dan mengekstrak Client Hello sebelum koneksi terbentuk. Ini berarti TLS fingerprinting tetap bekerja bahkan ketika JavaScript diblokir, ketika browser memasang ekstensi privasi, atau ketika klien sama sekali bukan browser.
Sifat sisi server ini juga membuat TLS fingerprint tahan terhadap spoofing. Meski secara teori mungkin untuk menyusun TLS Client Hello kustom yang meniru browser tertentu, melakukannya menuntut implementasi TLS di tingkat rendah — jauh lebih banyak usaha daripada mengubah string user agent. Sebagian besar alat spoofing tidak mencobanya.
Integrasi dengan Identifikasi Perangkat
Dalam mesin identifikasi perangkat kami, TLS fingerprint berperan sekaligus sebagai sinyal dan validator. Sebagai sinyal, ia berkontribusi pada fingerprint perangkat keseluruhan dengan bobot identifikasinya sendiri. Sebagai validator, ia menyediakan pemeriksaan silang terhadap identitas browser yang diklaim. Jika sinyal JavaScript berkata "Chrome di macOS" tetapi TLS fingerprint berkata "Firefox di Linux," ketidakcocokan itu memicu penanda tampering dalam analisis Smart Signals kami.