是否可以仅根据网络窃听者可见的数据被动地对 HTTPS 客户端进行指纹识别?
换句话说,考虑一个可以看到所有数据包的网络监控盒(但不知道任何私钥,只是被动地监控流量)。仅基于网络跟踪中可见的内容,能否推断出正在使用的客户端版本的合理猜测?例如,我们能猜出客户端使用的是什么浏览器和什么版本吗?
当然 TLS 会加密数据和有效负载,但有一些值是明文发送的:客户端建议的密码套件集、客户端的日期/时间(的前 4 个字节client_random
)、支持的压缩方法列表客户端,以及客户端支持的 TLS 扩展列表,当然还有每个列表中值的顺序。这里是否有足够的变化来推断用户正在使用哪个浏览器并区分大多数主要浏览器?是否足以区分浏览器版本?
我正在考虑类似于 p0f 的东西(它执行被动操作系统指纹识别),但在这里我们正在查看 HTTPS 连接的未加密部分(而不是 TCP 标头),这里的目标是推断使用的浏览器/HTTPS 客户端由客户端主机(而不是推断客户端使用的操作系统)。