SSL (Secure Socket Layer) / TLS (Transport Layer Security)
SSL (Secure Socket Layer) / TLS (Transport Layer Security) è un servizio di sicurezza a livello di trasporto, con lo scopo di fornire riservatezza, integrità ed autenticazione tra due applicazioni che comunicano via internet. L'utilizzo principale è per proteggere informazioni trasmesse tra browser e web servers.
Brevi cenni storici
Sviluppato da Netscape, la 3a versione è stata sviluppata con revisione pubblica, diventando uno standard IETF noto come TLS (Transport Layer Security, ora TLS v 1.2 ha stesso protocollo ma cambiano gli algoritmi supportati è resistente agli attacchi noti) (protegge quindi a livello di applicazioni, ultimo livello, layer 7).
SSL: l'autenticazione
Permette tramite certificati, del server ed eventualmente del client e la cifratura di tutti i dati scambiati tra server e client per garantire autenticazione, riservatezza, integrità. SSL implementa diverse fasi (negoziazioni chiavi, scambio certificati…) e protocolli.
Sessione SSL
Una sessione SSL è un’associazione tra client e server creata tramite il protocollo con cui si negoziano i parametri di sicurezza (Protocollo Handshake), la sessione può essere usata da più connessioni.
Connessione SSL
Ogni connessione viene associata ad una sola sessione, la connessione identifica una relazione transiente tra nodi (una forma di trasporto).
Protocolli SSL
SSL è costituito da 2 livelli di protocolli:
- Protocollo SSL Record, che fornisce servizi di base (riservatezza, integrità…) per i protocolli di livello superiore (come HTTP).
- Tre protocolli di alto livello:
- Protocollo Handshake, che negozia i parametri di sicurezza e autentica server e client
- Protocollo Change Cipher Spec, che termina negoziazione e autenticazione
- Protocollo Alert (gestisce gli errori)
Protocollo SSL Record
Fornisce: tramite la cifratura simmetrica (DES, AES…) utilizzando una chiave segreta condivisa, riservatezza definita dal protocollo Handshake (il messaggio è compresso prima della cifratura), integrità/autenticazione utilizzando MAC con chiave segreta condivisa (le operazioni di cifratura simmetrica e generazione del codice MAC vengono eseguite con chiavi diverse!).
Funzionamento:
- Frammenta l'input in blocchi di dimensione 214 byte
- Comprimi i dati (i blocchi)
- Computa un codice MAC sul blocco
- Cifra il blocco con chiave simmetrica in modalità CBC
- Aggiunge un'intestazione contenente il protocollo di livello più alto (es. Handshake, HTTP, alert…), la lunghezza in byte del frammento e la versione di SSL/TLS
- Trasmette il risultato in un segmento TCP
n.b. La funzione MAC si computa oltre che sul frammento anche su type, version, length:
MAC(MAC_write_key, seq_num||SSLCompressed.type||SSLCompressed.length||SSLCompressed.fragment)
in cui:
- seq_num è il numero sequenziale associato al messaggio su cui si computa MAC
- SSLCompressed.type è il tipo del protocollo ad alto livello utilizzato per elaborare il frammento (alert, ...)
-
Fondamenti di sicurezza - Sicurezza in Rete e livello di trasporto
-
Fondamenti di Sicurezza
-
Fondamenti di automatica
-
Fondamenti di informatica