Dove si svolge la crittografia SSL?

27

Ho controllato la trasmissione dei dati di un sito web HTTPS (gmail.com) usando Firebug. Ma non riesco a vedere alcuna crittografia per i miei dati inviati (nome utente e password). Dove si svolge la crittografia SSL?

    
posta ebola virus 03.09.2012 - 15:53
fonte

8 risposte

40

Il protocollo SSL è implementato come wrapper trasparente attorno al protocollo HTTP. In termini di modello OSI , è un po 'un'area grigia. Di solito è implementato nel livello dell'applicazione, ma in senso stretto è nel livello di sessione.

Pensa in questo modo:

  1. Strato fisico (cavo di rete / wifi)
  2. Livello collegamento dati (ethernet)
  3. Livello di rete (IPv4)
  4. Transport layer (TCP)
  5. Livello sessione (SSL)
  6. Livello di presentazione (nessuno in questo caso)
  7. Livello applicazione (HTTP)

Si noti che SSL si trova tra HTTP e TCP.

Se vuoi vederlo in azione, prendi Wireshark e naviga su un sito tramite HTTP, quindi un altro tramite HTTPS. Vedrai che puoi leggere le richieste e le risposte sulla versione HTTP come testo normale, ma non quelle HTTPS. Potrai anche vedere i livelli in cui è diviso il pacchetto, dal livello del collegamento dati verso l'alto.

Aggiornamento : è stato sottolineato (vedi commenti) che il modello OSI è un eccesso di generalizzazione e non si adatta molto bene qui. Questo è vero. Tuttavia, l'uso di questo modello è quello di dimostrare che SSL si trova "da qualche parte" tra TCP e HTTP. Non è strettamente accurato ed è una vaga astrazione della realtà.

    
risposta data 03.09.2012 - 16:08
fonte
22

Con HTTPS, la crittografia avviene tra il browser Web e il server Web. Firebug viene eseguito sul browser stesso, quindi vede i dati in chiaro; la crittografia avviene quando esce dal browser.

Utilizza uno strumento di monitoraggio della rete (ad esempio Microsoft Network Monitor o < a href="http://www.wireshark.org/"> Wireshark ) per osservare il traffico crittografato. Utilizza un attacco Man-in-the-Middle come Fiddler per avere un'idea di cosa può fare un utente malintenzionato (ovvero: intercettare la connessione e recuperare i dati è fattibile SE l'utente può essere persuaso a "ignorare il fannullone" avvisi del browser "sui certificati non attendibili, quindi non ignorare gli avvisi!).

    
risposta data 03.09.2012 - 16:06
fonte
4

HTTPS è HTTP su TLS (o su SSL, che è il nome di versioni precedenti di TLS ).

SSL / TLS, se configurato correttamente, garantisce privacy e integrità dei dati tra due applicazioni di comunicazione (vedi Specifiche TLS ), su un trasporto affidabile, tipicamente TCP.

Sebbene i socket TCP non siano menzionati nelle specifiche TLS, SSL e TLS sono stati progettati con l'obiettivo di fornire un modello che potrebbe essere utilizzato quasi come normali socket TCP dai programmatori di applicazioni. Oltre ad alcuni casi limite (ad esempio, per chiusura socket o se vuoi che la tua applicazione tu sappia trattative), questo è davvero il caso. Gli stack SSL / TLS spesso forniscono wrapper che rendono i socket SSL / TLS programmabili allo stesso modo dei normali socket TCP (una volta configurati); ad esempio, il% diSSLSocket di Java estende Socket .

La maggior parte delle applicazioni si basa su librerie esistenti per utilizzare SSL / TLS (ad esempio JSSE in Java, SChannel, OpenSSL, libreria NSS di Mozilla, CFNetwork di OSX, ...). Con poche modifiche al semplice codice TCP (di solito, tutto intorno alle certificazioni e alla gestione del trust e alle impostazioni della suite di crittografia / cifratura, se necessario), i socket / flussi SSL o TCP, a seconda del tipo di API, vengono utilizzati per scambiare testo semplice come per quanto riguarda l'applicazione. È la libreria sottostante che tende a fare il lavoro di crittografia, in modo trasparente.

Quando guardi il traffico all'interno degli strumenti dello sviluppatore del browser, è ciò che viene scambiato su quelle librerie che vedi. Per visualizzare il traffico crittografato, devi controllare il traffico effettivo (ad esempio utilizzando Wireshark).

    
risposta data 04.09.2012 - 00:11
fonte
2

Mentre tutti i modelli di rete sono imperfetti, questa domanda può essere risolta solo osservando ciò che SSL (TLS in realtà) fa. (1) Sulla parte superiore di un flusso di rete affidabile (TCP a livello OSI 4) fornisce un flusso bidirezionale crittografato e (quasi sempre) garantisce l'identità del server e (facoltativamente) il client. Il client di autenticazione può essere un processo, un utente o un'altra entità che può rispondere correttamente alle sfide di autenticazione richieste.

TLS significa Transport Layer Security. Tuttavia, poiché implementa identità di sessione, integrità, avvio, rimozione e gestione, appartiene molto al livello di sessione. La pagina di Wikipedia afferma che questo appartiene al livello di presentazione OSI. Questo è probabilmente sbagliato. Il livello di presentazione riguarda maggiormente il marshalling dei dati in formati non dipendenti dalla rete e l'interpretazione sul lato host tramite l'applicazione appropriata.

La crittografia a riposo (ad esempio in un campo di database o messaggio di posta elettronica) potrebbe essere un candidato per il livello di presentazione, ma suggerirei che è più vicino a una forma di sicurezza del sistema operativo o dell'applicazione.

Quindi in realtà TLS è per lo più a livello di sessione in quanto fornisce sicurezza di sessione point-to-point per il trasporto (TCP). In altri modi fornisce funzioni di autenticazione che sono chiaramente application layer (OS, utility o user app).

Quindi è un sacco di livello 5 e un po 'di livello 7.

Buona fortuna.

    
risposta data 21.10.2013 - 23:18
fonte
1

Nonostante sia possibile leggere / scrivere dati su canali SSL / TLS come con socket TCP / IP vaniglia, in Java o C o altro, SSL fornisce il concetto di sessione SSL, che può essere mantenuta su più TCP / Connessioni IP Pertanto, IMHO rende SSL un protocollo di livello sessione (mi chiedo perché qualcuno abbia inventato il nome TLS ...).

    
risposta data 21.11.2014 - 12:12
fonte
1

SSL opera a livello di presentazione nel modello OSI (Layer6). Vedi riferimento La guida TCP / IP, M. Kozierok, pagina 111. "I protocolli di questo livello si occupano delle attività di manipolazione che trasformano i dati da una rappresentazione all'altra, come la traduzione, la compressione e la crittografia Uno dei più comuni schemi di crittografia generalmente associati al livello di presentazione è il protocollo Secure Socket Layer (SSL). " HTTPS è il protocollo del livello dell'applicazione che utilizza ssl al livello 6 per scopi di crittografia.

    
risposta data 27.11.2015 - 17:31
fonte
0

È un livello sopra il livello di trasporto, solitamente TCP.

Puoi vedere i dati criptati entrare e uscire con wireshark.

    
risposta data 03.09.2012 - 16:03
fonte
-2

Secondo: Kozierok, Charles M. 2005. La guida TCP / IP. No Starch Press, Inc. San Francisco, CA. 94103. ISBN 1-59327-047-X pp 947 -1080

SSL funziona su OSI layer 6.

    
risposta data 01.08.2017 - 03:12
fonte

Leggi altre domande sui tag