È possibile impronte digitali passive di un client HTTPS, basato esclusivamente sui dati visibili a una rete che intercetta di nascosto?
In altre parole, considera una casella di monitoraggio della rete in grado di visualizzare tutti i pacchetti (ma non conosce le chiavi private e controlla solo passivamente il traffico). Può dedurre una ragionevole ipotesi sulla versione del client utilizzata, basata solo su ciò che è visibile nella traccia della rete? Ad esempio, possiamo indovinare quale browser e quale versione viene utilizzata sul lato client?
Ovviamente TLS crittografa i dati e il payload, ma ci sono alcuni valori che vengono inviati in chiaro: l'insieme di ciphersuites suggerite dal client, la data / ora del client (primi 4 byte di client_random
), un elenco dei metodi di compressione supportati dal client e un elenco di estensioni TLS supportate dal client e, naturalmente, l'ordine dei valori in ciascuno di questi elenchi. C'è abbastanza variazione qui per inferire quale browser l'utente sta usando e distinguere tra i principali browser? C'è abbastanza da distinguere tra le versioni del browser?
Sto pensando a qualcosa di analogo a p0f (che fa fingerprinting del sistema operativo passivo ), ma qui noi ' sto cercando la parte non crittografata di una connessione HTTPS (piuttosto che le intestazioni TCP), e qui l'obiettivo è di dedurre il client browser / HTTPS utilizzato dall'host client (piuttosto che dedurre il sistema operativo utilizzato dal client).