it-swarm-eu.dev

Perché è possibile annusare una richiesta HTTPS / SSL?

Sono nuovo nel regno delle richieste e della sicurezza HTTP e di tutte quelle cose buone, ma da quello che ho letto, se vuoi che le tue richieste e risposte siano crittografate, usa HTTPS e SSL e sarai bravo. Qualcuno in un domanda precedente ha pubblicato un link a questa app http://www.charlesproxy.com/ che mostra che è effettivamente possibile annusare le richieste HTTPS e vedere il richiesta e risposta in testo PLAIN.

Ho provato questo con il login di facebook.com e sono stato davvero in grado di vedere il mio nome utente e password in testo semplice. Era troppo facile. Cosa sta succedendo? Ho pensato che fosse questo il punto di HTTPS: crittografare richieste e risposte?

48
bitmoe

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

Un proxy è, per definizione, un man-in-the-middle : 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 una verifica di chi ti stai connettendo.

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

Il tuo browser sa che è collegato a Facebook perché il sito ha un certificato che dice "Sono davvero www.facebook.com”. crittografia a chiave pubblica , per mezzo del quale non entrerò qui, garantisce che solo il titolare della chiave privata possa avviare una connessione valida con questo certificato. Questa è solo metà della battaglia: hai solo la pretesa del server che è davvero www.facebook.com e non randomhijacker.com. Ciò che fa il tuo browser è inoltre verificare che il certificato sia stato validato da un autorità di certificazione . Il tuo browser o sistema operativo viene fornito con un elenco di autorità di certificazione di cui si fida. Ancora una volta, la crittografia a chiave pubblica garantisce che solo la CA possa emettere certificati che il tuo browser accetterà.

Quando ti connetti al proxy, il tuo browser riceve un certificato che dice "Sono davvero www.facebook.com”. Ma questo certificato non è firmato da una CA che il tuo browser considera attendibile per impostazione predefinita. Così:

  • o hai ricevuto un avviso su una connessione HTTPS non sicura, su cui hai fatto clic per vedere il concent in https://www.facebook.com/;
  • oppure aggiunta la CA che ha firmato il certificato del proxy ("Certificato CA di Charles") all'elenco delle CA di cui il browser si fida.

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

Lettura consigliata per ulteriori informazioni:

Non puoi interrompere https se non hai accesso alla sessione chiave simmetrica . In breve, https sessioni funzionano in questo modo:

  1. Il client e il server si scambiano alcune informazioni iniziali
  2. Usando queste informazioni il client è in grado di autenticare il server , assicurandosi che valga la pena
  3. Il client utilizza chiave pubblica del server per inviargli un segreto crittografato
  4. Il server decodifica questo segreto usando 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 della sessione
  6. Ora possono parlarsi in modo sicuro perché nessun altro conosce la chiave simmetrica della sessione

Se in qualche modo un terzo è in grado di accedere al segreto condiviso, sarà anche in grado di generare la chiave simmetrica della sessione e decrittografare la comunicazione.