本文へスキップ
ecdsa.com

JA4(TLS クライアントフィンガープリント)

ClientHello に含まれるプロトコル、バージョン、SNI、暗号スイートと拡張の数とソート済みのハッシュ値から TLS クライアントのフィンガープリントを作る、FoxIO が 2023年に発表した手法で、ブラウザーが拡張の順序をランダム化しても値が変わらないよう設計されています。
別表記JA4JA3JA4+TLS fingerprint

JA4 フィンガープリントは 3 つの部分からなります。たとえば Chrome の TCP 接続では t13d1517h2_8daaf6152771_cb7bf5808d99 となります。各部分は、人が読めるプレフィックス(TCP なら t、QUIC なら q、TLS のバージョン、SNI がドメインなら d、暗号スイートと拡張の数、最初の ALPN)、ソートした暗号スイートの SHA-256 を切り詰めた値、そしてソートした拡張(SNI と ALPN を除く)の後に署名アルゴリズムを出現順に続けたものの SHA-256 を切り詰めた値です。GREASE 値は無視されます。

JA4 は JA3(Salesforce、2017年)に取って代わりました。JA3 は拡張を通信上の順序のままハッシュしていたため、2023年初めに Chrome が拡張の順序をシャッフルし始めると、値が安定しなくなりました。JA4 はボット検出、マルウェアの追跡、トラフィック分析に使われます。識別するのはソフトウェアであってユーザーではなく、uTLS などのライブラリを使えば誰でもフィンガープリントを模倣できます。JA4 自体は 3 条項 BSD ライセンスですが、その他の JA4+ の手法(JA4S、JA4H、JA4X など)は、商用利用を制限する FoxIO License 1.1 を採用しています。

規格と参考文献

すべての用語