¿Es posible realizar una huella digital pasiva de un cliente HTTPS, basado únicamente en datos visibles para una persona que escucha la red?
En otras palabras, considere un cuadro de monitoreo de red que pueda ver todos los paquetes (pero no conoce ninguna clave privada y solo monitorea el tráfico de forma pasiva). ¿Se puede inferir una estimación razonable de la versión del cliente que se está utilizando, basándose solo en lo que se ve en la traza de la red? Por ejemplo, ¿podemos adivinar qué navegador y qué versión se está utilizando en el lado del cliente?
Por supuesto, TLS encripta los datos y la carga útil, pero hay algunos valores que se envían de forma clara: el conjunto de conjuntos de cifrado sugeridos por el cliente, la fecha / hora del cliente (primeros 4 bytes de client_random
), una lista de los métodos de compresión soportados por el cliente, y una lista de extensiones TLS soportadas por el cliente, y por supuesto el orden de los valores en cada una de estas listas. ¿Hay suficiente variación aquí para inferir qué navegador está utilizando el usuario y distinguir entre la mayoría de los principales navegadores? ¿Hay suficiente para distinguir entre las versiones del navegador?
Estoy pensando en algo análogo a p0f (que hace huellas digitales del sistema operativo pasivo ), pero aquí está buscando la parte sin cifrar de una conexión HTTPS (en lugar de encabezados TCP), y aquí el objetivo es inferir el navegador / cliente HTTPS utilizado por el host del cliente (en lugar de inferir el sistema operativo utilizado por el cliente).