Protocollo Handshake

Il protocollo Handshake, che viene eseguito prima di inviare qualunque dato applicativo, è la parte più complessa di TLS, poichè deve garantire interoperabilità tra client e server che non si conoscono a priori e potrebbero supportare schemi crittografici diversi. Infatti, esso permette al client e al server di:

Generazione delle chiavi

Come già detto, SSL/TLS richiede quattro diverse chiavi segrete condivise:

Inoltre, la cifratura (tipicamente in modalità CBC) richiede due vettori di inizializzazione (per le due direzioni del flusso di dati).

Questi 6 valori formano insieme il keyblock, che viene visto come un “blocco unico” (di dimensioni variabili in base agli algoritmi impiegati) e generato a partire da dei valori scambiati nell’handshake: un pre-master secret e due valori random (nonce).

Struttura dell’handshake

Il protocollo Handshake è composto da un insieme di messaggi che vengono scambiati nel corso di 4 fasi:

  1. negoziazione degli algoritmi di sicurezza che verranno utilizzati nella sessione
  2. autenticazione del server (opzionale ma consigliata) e scambio delle informazioni per la generazione delle chiavi
  3. autenticazione del client (opzionale) e scambio delle informazioni per la generazione delle chiavi
  4. fine