Una panoramica del handshake SSL/TLS

Il handshake SSL/TLS consente al client TLS e al server di stabilire le chiavi segrete con cui comunicano.

Questa sezione fornisce un riepilogo dei passi che consentono al client TLS e al server di comunicare tra di loro.

  • Concordare la versione del protocollo da utilizzare.
  • Selezionare algoritmi crittografici.
  • Autenticarsi a vicenda scambiando e validando certificati digitali.
  • Utilizzare le tecniche di crittografia asimmetriche per generare una chiave segreta condivisa, che evita il problema della distribuzione chiave. TLS utilizza quindi il tasto condiviso per la crittografia simmetrica dei messaggi, che è più veloce della crittografia asimmetrica.

Per ulteriori informazioni sugli algoritmi crittografici e sui certificati digitali, fare riferimento alle informazioni correlate.

In panoramica, i passi coinvolti nel handshake TLS sono i seguenti:
  1. Il client TLS invia un messaggio client hello che elenca le informazioni crittografiche come la versione TLS e, nell'ordine di preferenza del client, le CipherSuites supportate dal client. Il messaggio contiene anche una stringa di byte casuale che viene utilizzata nelle successive elaborazioni. Il protocollo consente all' client hello di includere i metodi di compressione dati supportati dal client.
  2. Il server TLS risponde con un messaggio server hello che contiene la CipherSuite scelta dal server dall'elenco fornito dal cliente, l'ID sessione e un'altra stringa di byte casuale. Il server invia anche il suo certificato digitale. Se il server richiede un certificato digitale per l'autenticazione del client, il server invia un richiesta certificato client che include un elenco dei tipi di certificati supportati e i Distinguished Nomi delle Autorità di Certificazione accettabili (CA).
  3. Il client TLS verifica il certificato digitale del server. Per ulteriori informazioni, vedi Come TLS fornisce l'identificazione, l'autenticazione, la riservatezza e l'integrità.
  4. Il client TLS invia la stringa di byte casuale che consente sia al client che al server di calcolare la chiave segreta da utilizzare per crittografare i dati dei messaggi successivi. La stringa di byte casuale stessa viene crittografata con la chiave pubblica del server.
  5. Se il server TLS ha inviato un richiesta certificato client, il client invia una stringa di byte casuale crittografata con la chiave privata del client, insieme al certificato digitale del cliente, o a un nessun avviso certificato digitale. Questo avviso è solo un avvertimento, ma con alcune implementazioni il handshake fallisce se l'autenticazione del client è obbligatoria.
  6. Il server TLS verifica il certificato del cliente. Per ulteriori informazioni, vedi Come TLS fornisce l'identificazione, l'autenticazione, la riservatezza e l'integrità.
  7. Il client TLS invia al server un messaggio finito , che viene crittografato con la chiave segreta, indicando che la parte client della handshake è completa.
  8. Il server TLS invia al client un messaggio finito , che viene crittografato con la chiave segreta, indicando che la parte server della handshake è completa.
  9. Per tutta la durata della sessione TLS, il server e il client possono ora scambiare messaggi simmetricamente criptati con la chiave segreta condivisa.
Figura 1 illustra il handshake TLS.
Figura 1. Panoramica del handshake TLS
Questo diagramma illustra il handshake TLS descritto nel testo che precede il diagramma.