it-swarm.dev

Gli URL visualizzati durante le transazioni HTTPS su uno o più siti Web da un singolo IP sono distinguibili?

Ad esempio, supponiamo che i seguenti siano URL HTTPS su due siti Web di un IP in 5 minuti: "A.com/1", "A.com/2", "A.com/3", "B.com/1" , "B.com/2".

Il monitoraggio dei pacchetti rivelerebbe:

  • niente,
  • rivelare che solo l'IP ha visitato "A.com" e "B.com" (intendendo solo il DNS),
  • rivelare che solo l'IP ha visitato "A.com/1" e "B.com/1" (la prima richiesta HTTPS per ciascun sito),
  • rivela un elenco completo di tutti gli URL HTTPS visitati,
  • rivela solo gli IP di "A.com" e "B.com",
  • o qualcos'altro?

Domanda correlata: la mia azienda può vedere a quali siti HTTPS sono andato?

Sebbene questa domanda abbia ulteriori informazioni, per quanto ne so non affronta in modo specifico lo scenario di "rivelare solo che l'IP ha visitato" A.com/1 "e" B.com/1 "(il primo Richiesta HTTPS per ogni sito) "- sebbene la possibilità di sbagliare sia alta e felice di eliminare la domanda se è un duplicato.


NOTA: Questa è una domanda successiva a un risposta che è stato pubblicato come: Perché HTTPS non è il protocollo predefinito?

69
blunders

TLS rivela a un intercettatore le seguenti informazioni:

  • il sito che stai contattando
  • la lunghezza (possibilmente approssimativa) del resto dell'URL
  • la lunghezza (possibilmente approssimativa) dell'HTML della pagina visitata (supponendo che non sia memorizzata nella cache)
  • il numero (possibilmente approssimativo) di altre risorse (ad es. immagini, iframe, fogli di stile CSS, ecc.) sulla pagina visitata (presupponendo che non siano memorizzati nella cache)
  • l'ora in cui viene inviato ciascun pacchetto e viene avviata ogni connessione. (@nealmcb sottolinea che l'ascoltatore impara un lotto sui tempi: l'ora esatta in cui è stata avviata ogni connessione, la durata della connessione, l'ora in cui ciascun pacchetto è stato inviato e l'ora in cui è stata inviata la risposta, l'ora in cui il server risponde a ciascun pacchetto, ecc.)

Se si interagisce con un sito Web facendo clic sui collegamenti in serie, il intercettatore può vedere ognuno di questi per ogni clic sulla pagina Web. Queste informazioni possono essere combinate per provare a dedurre quali pagine stai visitando.

Pertanto, nel tuo esempio, TLS rivela solo A.com vs B.com, perché nel tuo esempio, il resto dell'URL ha la stessa lunghezza in tutti i casi. Tuttavia, il tuo esempio è stato scelto male: non è rappresentativo della pratica tipica sul web. Di solito, le lunghezze degli URL su un determinato sito variano e quindi rivelano informazioni sull'URL a cui si accede. Inoltre, anche la lunghezza delle pagine e il numero di risorse variano, il che rivela ancora più informazioni.

Ci sono state ricerche che suggeriscono che queste fughe possono rivelare informazioni sostanziali agli intercettatori su quali pagine stai visitando. Pertanto, non dovresti non supporre che TLS nasconda le pagine che stai visitando da un intercettatore. (Mi rendo conto che è controintuitivo.)


Aggiunto: Ecco alcune citazioni ad alcune ricerche in letteratura sull'analisi del traffico di HTTPS:

81
D.W.

La seconda scelta Soprattutto.

Quando un browser visita un sito Web HTTPS, stabilisce un tunnel TLS , che comporta uno scambio di chiavi asimmetrico (client e server concordano un segreto condiviso). Tale meccanismo di scambio di chiavi utilizza la chiave pubblica del server, che il server mostra come parte del suo certificato. Il certificato del server contiene il nome del server (ad es. A.com) e il client verifica che il nome corrisponda a quello previsto (ovvero il nome del server nell'URL). Il certificato del server viene inviato, fatalmente, prima di lo scambio di chiavi, quindi in bella vista.

Il resto dell'URL viene inviato come parte della richiesta HTTP che si verifica all'interno del tunnel crittografato, quindi invisibile a terzi. Un determinato tunnel può essere riutilizzato per diverse altre richieste HTTP, ma (per costruzione) sono tutte per lo stesso server (lo stesso nome di dominio).

20
Thomas Pornin