Perché Firefox ha diviso la richiesta HTTPS?

9

Uso la versione 28.0 del browser Firefox. Per accedere al link , ho inserito un proxy con un certificato autofirmato tra e il mio PC client può accedere al sito HTTPS. Ho quindi annusato il traffico nel mio PC client e ho osservato una cosa strana;

Ogni richiesta HTTPS inviata da Firefox viene suddivisa in due segmenti TCP. Uno è solo un carattere lungo (" G "), l'altro include il resto (" ET / HTTP 1.1 ...")

Perché Firefox si comporta in questo modo?

    
posta appleleaf 16.07.2014 - 09:56
fonte

1 risposta

10

Questa è la tecnica "1 / n-1 split" che è stata distribuita nelle librerie SSL come soluzione alternativa all'attacco BEAST.

L'attacco BEAST è l'applicazione a un contesto Web di un attacco di testo normale scelto . L'attacco funziona quando:

  • La crittografia utilizza un codice a blocchi in modalità CBC .
  • L'utente malintenzionato può scegliere i dati che vengono crittografati (in un contesto Web, questo viene fatto con Javascript).
  • Subito prima di inviare i suoi byte per crittografare, l'utente malintenzionato conosce l'IV che verrà utilizzato con la modalità CBC.

In SSL 3.0 e TLS 1.0, l'IV per un record è l'ultimo blocco crittografato dal record precedente, in modo che l'utente malintenzionato possa vederlo spiando la linea (la configurazione dell'attacco suppone che l'attaccante possa origliare sulla linea < em> e invia informazioni ad alcuni Javascript malvagi inseriti nel browser della vittima - questo è realistico nello scenario "WiFi in un ristorante", con un punto di accesso controllato dagli attaccanti).

Il "1 / n-1 split" impedisce l'attacco perché il frame con 1 byte include un valore MAC, che l'utente malintenzionato non può prevedere e che viene crittografato. La sottigliezza è una questione di tempistica : quando l'utente malintenzionato sceglie i dati che verranno crittografati, non sono stati emessi né i record "1" né "n-1"; solo quando l'utente malintenzionato ha spinto i suoi n byte, i due record verranno calcolati e inviati. L'effetto netto è che l'attaccante non sarà in grado di conoscere l'IV per il record n-1 prima di inviare i suoi n byte per crittografare. L'attaccante sarà ancora in grado di predire la IV per il record "1", ma un byte non è sufficiente per l'attaccante per rimuovere l'attacco BEAST.

Teoricamente, uno "0 / n split" sarebbe possibile (un primo frame senza dati, quindi il frame effettivo) e sarebbe ancora migliore (in modo accademico), ma, sebbene sia supportato fino a come lo standard è interessato, un certo numero di implementazioni implementate soffoca sui record vuoti, quindi il "1 / n-1 split" è considerato più pratico.

L'attacco BEAST richiede anche che l'attaccante ottenga molto controllo sui byte che deve inviare, ad es. non deve essere limitato ai soli caratteri ASCII; l'attacco del prototipo si basava su un paio di vulnerabilità extra che sono state corrette da allora, quindi anche senza la divisione 1 / n-1, l'attacco non funzionerebbe più. Ma i progettisti di librerie SSL sono cauti e non vogliono vedere la sicurezza SSL messa a repentaglio da una vulnerabilità in un altro componente dell'applicazione.

TLS 1.1 e versioni successive sono immuni perché la loro intestazione del record include un IV specifico.

    
risposta data 16.07.2014 - 13:08
fonte

Leggi altre domande sui tag