TLS指纹(TLS Fingerprinting)通过分析TLS握手消息中的字段组合来识别客户端或服务器实现。不同软件(浏览器、操作系统、恶意软件)在TLS握手时选择的密码套件、扩展列表、椭圆曲线等参数组合存在显著差异——这种差异源于TLS库的实现细节与默认配置,与IP地址或域名无关。
JA3由Salesforce于2017年提出,将TLS ClientHello中的版本、密码套件、扩展列表、椭圆曲线和椭圆曲线格式按逗号分隔拼接后计算MD5哈希,生成32字符指纹;JA3S对应ServerHello指纹。JA4由FoxIO于2024年发布,采用分段设计:JA4_a保留可读原始字段,JA4_b为密码套件列表的截断哈希,JA4_c为扩展列表的截断哈希,显著提升了可调试性与区分度。
JA4+进一步扩展为JA4S(服务器)、JA4H(HTTP)、JA4X(X.509证书)、JA4T(TCP)、JA4L(延迟)、JA4SSH(SSH)等变体,形成覆盖多协议的综合指纹体系。FoxIO维护的JA4DB社区指纹库已收录超过20万条验证记录(公开统计持续增长),覆盖浏览器、移动应用、IoT设备与恶意软件家族。Bicakci等人(2026)基于JA4DB的评估显示,以JA4_b/JA4_c等特征训练梯度提升分类器(CatBoost/XGBoost)检测恶意Web机器人,AUC可达0.998。
数据来源:Bicakci et al., arXiv:2602.09606;JA4DB公开统计;JA3er.com;FoxIO JA4+规范