Stack of secure protocols


Lecture Info

Appunti presi in classe, seconda lezione in presenza sui protocolli sicuri.

1 Introduzione

Si parte sempre dal presupposto che i vari protocolli sicuri proteggono soltanto determinati layer dello stack. Ad esempio, il protocollo MACSec protegge lo stack a livello 2, contro attacchi provenienti dalla stessa LAN (spoofing, access control, ec…).

2 IPSec

IPSec aggiunge feature di sicurezza al livello IP. Esistono due tipi di implementazione:

2.1 Transport mode

Comunicazione sicura tra due host. b1.png In questo caso, l'header IP non viene cifrato. Vengono aggiunti dei campi ESP che specificano gli encryption schemes usati in IPSec.

2.2 Tunnel mode

Comunicazione sicura tra due gateway. b2.png In questo caso viene criptato e autenticato l'intero pacchetto IP, e viene aggiunto un nuovo header IP.

3 TLS/DTLS

TLS è un protocollo sicuro per dei canali di comunicazione stream-oriented, infatti si basa su TCP. A volte viene anche chiamato SSL (nome usato nelle vecchie versioni). DTLS invece è un protocollo datagram-oriented, come UDP. Entrambi questi protocolli si basano su un procedimento noto come 4-way-handshake.

  1. Il client specifica la versione del protocollo usata, il Session ID, e le "Cipher Suites";
  2. Il server si autentica mandando la catena dei certificati;
  3. Il client invia i suoi certificati nel caso in cui si voglia autenticare. In questo caso si parla di Mutual Autentication (quando ad esempio il client è un API);
  4. Fase di chiusura dell'handshake.

Esiste un tipo di attacco a TLS chiamato Downgrade Attack in cui l'attaccante agisce sulla negoziazione del protocollo, cercando di "forzare" l'uso di una versione deprecata o non sicura. Per questo motivo attualmente si sconsiglia di implementare il supporto a versioni precedenti di TLS, per evitare problemi di questo tipo.


Esiste un'estensione di TLS che viene usata abbastanza comunemente, chiamata SNI (Server-Name-Indication). Serve nello specifico per abilitare il supporto al virtual-hosting (macchina che hosta diversi server virtuali, quindi con nomi diversi, usando lo stesso indirizzo IP). Infatti normalmente il server-name verrebbe criptato (dato che fa parte del payload)! Serve quindi un modo per capire a quale virtual server specifico è indirizzata la richiesta per ottenere i certificati (virtual server diversi potrebbero usare catene di certificati diverse). Semplicemente, le informazioni per il virtual hosting vengono trasferite come plain-text durante il TLS handshake.