Certificato SSL e siti HTTPS: come funzionano

 
 
 
 
 
Autore: Redazione ArgonavisLAB – 03/02/2022
 
 

Un certificato SSL è un certificato digitale che autentica l’identità di un sito web e consente di instaurare una connessione crittografata. SSL è acronimo di Secure Sockets Layer, un protocollo di sicurezza che crea un link crittografato fra un server web e un browser web.

SSL assicura che tutti i dati scambiati fra un client (il browser dell’utente) e un server web (o altro servizio, come ftp, ecc.), in generale fra due sistemi, rimangano impossibili da leggere. Utilizza algoritmi di crittografia allo scopo di rendere irriconoscibili i dati in transito, per impedire agli hacker di leggerli mentre vengono trasmessi sulla connessione.

Per stabilire una sessione tra client e server in modalità https , viene prima eseguita la fase di “handshake SSL” , che prevede

  • Scambio dei certificati pubblici
  • Scambio delle sequenze di byte necessarie per costruire la master secret
  • Verifica dell’autenticità dei certificati
  • Creazione della chiave “master secret” , univoca per ogni sessione e comune a entrambi i sistemi, e che verrà usata per crittografare tutta la sessione di navigazione del client sul server.
  • Messaggio di fine handshake, in cui viene verificato che tutto il processo sia stato regolare e la master secret sia utilizzabile.

Da questo momento può iniziare lo scambio dati tra client e server , tutto il traffico verrà crittografato , impedendo che un intruso sia in grado di leggere il traffico (sniffare), e possa introdursi nella sessione sostituendosi ad uno dei sistemi o di rubare delle informazioni.

Pertanto il certificato SSL assolve a tre funzioni

  • Autenticità: assicura che il server sia chi dice di essere , e non un clone falso.
  • Confidenzialità: definisce una chiave segreta comune ed unica per sessione , usata per crittografare il contenuto del messaggio.
  • Integrità: garantisce che i messaggi tra server e client sia integri e non modificati da un intruso.

La comunicazione SSL tra client e server avviene su quattro fasi

  1. Fase di hello : server e client si scambiano i certificati pubblici e delle sequenze di byte casuali ; il client verifica l’autenticità del certificato inviato dal server.
  2. Processo di costruzione della master secret , la chiave comune unica per ogni sessione, che sarà usata per cifrare il traffico.
  3. Fase di finished : client e server si scambiano il primo messaggio usando la master secret , verificano l’esito positivo e concludono la fase di handshake.
  4. Inizio trasmissione cifrata tra server e client , tramite protocollo SSL.

In conclusione:

Il canale definito durante la fase di SSL handshake è immune da attacchi attivi man-in-the-middle poiché il sistema Server viene autenticato con un certificato digitale.
Il client può comunicare la pre-master secret al sistema server in modo sicuro attraverso la chiave pubblica presente nel certificato del server.

Solo il client e il server , tra cui è iniziata la fase di handshake (tramite il meccanismo chiave pubblica-chiave privata) , possono costruire la stessa master secret, su cui poi si fonda la costruzione di tutte le chiavi segrete adottate nelle comunicazioni successive.

La sequenza corrispondente al pre-master secret viene generata dal client e comunicata per via cifrata al server.  La non predicibilità di questa sequenza è cruciale per la sicurezza del canale SSL.

Il messaggio di finished contiene tutte le informazioni scambiate nel corso dell’handshake. Lo scopo è effettuare un ulteriore controllo sulle comunicazioni precedenti per garantire che queste siano avvenute correttamente, che il client e il server dispongano della stessa Master Secret e che la comunicazione non sia stata oggetto di un attacco attivo.

Scendendo un poco nel dettaglio , abbiamo :

  1. Client hello
  • Il client manda al server un messaggio di “client hello”
  • richiede la creazione di una connessione SSL
  • specifica le prestazioni di “sicurezza” che desidera siano garantite durante la connessione (l’elenco delle cipher suite che e’ in grado di supportare)
  • invia una sequenza di byte casuali.
  1. Server hello
  • Il server manda al client un messaggio di “server hello”
  • seleziona la cipher suite che desidera
  • invia una sequenza di byte casuali
  • Se il client non riceve il messaggio di server hello , il client interrompe la comunicazione
  1. Invio certificato del server
  • Il server invia il suo certificato pubblico (il crt) e i certificati pubblici della catena di certificazione della CA (Intermedi e di root)
  1. Invio del messaggio server hello done
  • Il server invia il messaggio che definisce la conclusione dei messaggi per la definizione del tipo di protezione e relativi parametri.
  1. Verifica dei certificati
  • Il client verifica la data di validita’ del certificato , che la CA sia trust , che la firma apposta dalla CA sia autentica (controllo con la CA). Se il certificato non è stato emesso da una CA pubblica, viene segnalato l’errore e richiesto se accettare comunque il certificato.
  1. Costruzione della pre-master secret
  • Il client genera una sequenza di byte casuali
  • la cifra con la chiave pubblica del server ricevuta nei passi precedenti
  • spedisce la pre-master secret al server
  1. Server e client : Costruzione della master secret
  • Sia il server che il client conoscono le sequenze di byte casuali scambiate tra server e client durante le fasi di client hello e server hello ; e conoscono la pre-master secret
  • Server e client costruiscono la master secret (che sarà uguale per entrambi)
  • L’uso delle sequenze di byte casuali scambiate durante le fasi di hello , client e server) genera una master secret diversa per ogni sessione SSL ; un intruso non può riutilizzare i messaggi di handshake catturati sul canale per sostituirsi in una successiva comunicazione
  1. Message finished
  • E’ il primo messaggio protetto tramite master secret e cipher suite, che i due sistemi si scambiano
  • Il messaggio viene prima costruito dal client e mandato al server
  • Poi il server usando parte del messaggio inviato dal client , costruisce il proprio finished message e lo invia al client
  • nei due invii la struttura del messaggio è la stessa, ma cambiano le informazioni in esso contenute
  1. Fine della fase handshake
  • A questo punto la master secret è utilizzata dal client e dal server per costruire una propria tripla di dati
  • Le triple del client e del server sono diverse tra loro ma note a entrambi i sistemi: ciascuno usa la propria, il che aumenta la sicurezza delle comunicazioni.
  • Client e server sono pronti al colloquio cifrato e inizia la fase del protocollo SSL record
  1. Protocollo SSL record
  • Il canale sicuro approntato dal protocollo SSL handshake viene realizzato dal protocollo SSL record.
  • I dati sono frammentati in blocchi.
  • Ciascun blocco viene numerato, compresso e autenticato mediante l’aggiunta di un MAC cifrato mediate il cifrario simmetrico su cui client e server si sono accordati , trasmesso dall’SSL record utilizzando il protocollo di trasporto sottostante.
  • Il destinatario esegue un procedimento inverso sui blocchi ricevuti:
  1. decifra e verifica la loro integrità
  2. decomprime e riassembla i blocchi in chiaro
  3. consegna all’applicazione sovrastante.

 

Questo articolo, scritto da ArgonavisLAB , ha liberamente preso spunto da vari autori. Si ringraziano Kaspersky Lab e http://pages.di.unipi.it/bernasconi/CRI/ssl.pdf

3 Febbraio 2022