Perché è possibile annusare una richiesta HTTPS / SSL?

46

Sono nuovo nel regno delle richieste HTTP e della sicurezza e di tutto ciò che di buono, ma da quello che ho letto, se vuoi che le tue richieste e le tue risposte siano criptate, usa HTTPS e SSL, e starai bene. Qualcuno in una domanda precedente ha pubblicato un link a questa app link che mostra che è effettivamente possibile annusare le richieste HTTPS e vedere la richiesta e la risposta nel testo PLAIN.

Ho provato questo con il login di facebook.com, e in effetti ero in grado di vedere il mio nome utente e la password in testo semplice. Era troppo facile. Cosa sta succedendo? Ho pensato che fosse l'intero punto di HTTPS - per crittografare le richieste e le risposte?

    
posta bitmoe 01.09.2012 - 14:58
fonte

2 risposte

57

Questo è spiegato nella loro pagina su proxy SSL , forse non con sufficienti spiegazioni.

Un proxy è, per definizione, un man-in-the-middle : il il client si connette al proxy e il proxy si connette al server.

SSL fa due cose:

  • Garantisce la riservatezza e l'integrità della connessione stabilita.
  • Esegue alcune verifiche su chi ti stai connettendo.

È la seconda parte che è importante, e apparentemente interrotta, qui: sei seduto al tuo browser e sei sorpreso che il tuo browser si stia connettendo al proxy mentre ti aspettavi che si connettesse a Facebook. Tecnicamente, il proxy non sta sniffando il traffico HTTPS, lo sta inoltrando.

Il tuo browser sa che è connesso a Facebook perché il sito ha un certificato che dice "Sono davvero www.facebook.com ”. crittografia a chiave pubblica , con la quale non entrerò qui, garantisce che solo il titolare della chiave privata può iniziare una connessione valida con questo certificato. Questa è solo metà della battaglia: hai solo l'affermazione del server che è in realtà www.facebook.com e non randomhijacker.com . Ciò che fa il tuo browser è inoltre controllare che il certificato sia stato convalidato da un'autorità di certificazione . Il browser o il sistema operativo viene fornito con un elenco di autorità di certificazione che ritiene affidabili. Ancora una volta, la crittografia a chiave pubblica garantisce che solo la CA possa emettere certificati accettati dal browser.

Quando ti connetti al proxy, il tuo browser riceve un certificato che dice "I am really www.facebook.com ". Ma questo certificato non è firmato da una CA che il tuo browser considera attendibile. Quindi:

In ogni caso, hai detto al tuo browser di fidarsi del proxy. Così fa. Una connessione SSL non è sicura se inizi a fidarti di estranei casuali.

Lettura consigliata per ulteriori informazioni:

risposta data 01.09.2012 - 16:21
fonte
1

Non puoi interrompere il link a meno che tu non abbia accesso alla sessione chiave simmetrica . In breve, le collegamento sessioni funzionano in questo modo:

  1. Client e server scambiano alcune informazioni iniziali
  2. Utilizzando queste informazioni il client è in grado di autenticare il server , assicurandosi che valga la pena di
  3. Il client utilizza la chiave pubblica del server per inviarlo un segreto crittografato
  4. Il server decodifica questo segreto utilizzando la sua chiave privata (solo il server autenticato può farlo!)
  5. Sia il client che il server utilizzano il segreto per generare localmente la chiave simmetrica di sessione
  6. Ora possono parlare tra loro in modo sicuro perché nessuno conosce la loro chiave simmetrica di sessione

Se in qualche modo lungo la strada una terza parte è in grado di accedere al segreto condiviso, sarà anche in grado di generare la chiave simmetrica della sessione e decrittografare la comunicazione.

    
risposta data 01.09.2012 - 15:38
fonte

Leggi altre domande sui tag