Suite di cifratura
Una suite di cifratura, denominata anche suite di crittografia o con il termine in inglese cipher suite è un insieme di algoritmi utilizzati per rendere sicuri i collegamenti di rete basati su Transport Layer Security (TLS) o sul suo predecessore, ora deprecato, Secure Socket Layer (SSL).…
Una suite di cifratura, denominata anche suite di crittografia o con il termine in inglese cipher suite è un insieme di algoritmi utilizzati per rendere sicuri i collegamenti di rete basati su Transport Layer Security (TLS) o sul suo predecessore, ora deprecato, Secure Socket Layer (SSL). L'insieme di algoritmi che costituisce una suite comprende tipicamente: un algoritmo per lo scambio delle chiavi crittografiche, un algoritmo di crittografia ed un algoritmo di message authentication code (MAC).
L'algoritmo per lo scambio delle chiavi si usa per assicurare lo scambio corretto, tra due dispositivi o computer, delle chiavi utilizzate dall'algoritmo di crittografia, che esegue l'operazione di criptare e decriptare i messaggi e i dati scambiati. L'algoritmo di MAC infine realizza i controlli di integrità dei dati per assicurare che il messaggio non abbia subito modifiche durante la trasmissione. In aggiunta a questi, le suite di cifrature possono comprendere anche algoritmi di firma digitale e di autenticazione per garantire le identità del server e/o del client.
Esistono centinaia di suite di cifratura differenti, ciascuna contenente una combinazione diversa dei vari algoritmi; alcune di queste offrono un livello di sicurezza superiore rispetto ad altre.
La struttura e l'impiego concettuale delle suite di cifratura sono descritti nel documento di riferimento dello standard TLS; la versione più diffusa di questo protocollo è TLS 1.2. La successiva versione TLS 1.3 aggiunge ulteriori requisiti sulle suite di cifratura, ma essendo stata standardizzata solo ad agosto 2018 non è ancora molto diffusa. Le suite di cifratura definite per TLS 1.2 non sono in generale utilizzabili con TLS 1.3 (e viceversa), salvo diversa indicazione nella loro definizione.
Un elenco di riferimento di suite di cifratura è disponibile sul TLS Cipher Suite Registry.
Storia
L'impiego dei cifrari nel protocollo Secure Socket Layer (SSL), poi evoluto nel TLS, era previsto fin dall'inizio ma, nella bozza originale, non si faceva menzione delle suite di cifratura; la possibilità offerta a un client e a un server di scegliere il meccanismo di crittografia da un piccolo insieme di cifrari veniva indicata come Cipher-Choice. Il termine cipher suite fu introdotto solo nel protocollo SSL v3 (l'ultima versione). Da allora tutte le versioni del TLS hanno utilizzato il termine Cipher Suite nei rispettivi standard di definizione. Il concetto e lo scopo della suite di cifratura non sono cambiati rispetto al momento dell'introduzione del termine: viene tuttora usato come una struttura che descrive gli algoritmi supportati da un computer da cui scegliere quali utilizzare per rendere sicura e protetta la trasmissione dei dati con un altro computer; quelle che sono cambiate nel tempo sono le versioni degli algoritmi presenti nelle suite di cifratura. Ogni versione di TLS ha aggiunto il supporto per le versioni di algoritmi più robuste eliminando al contempo quelle che erano state identificate come non più sicure.
La scelta della suite di cifratura viene determinata durante il processo iniziale di handshake. Il protocollo TLS 1.3 ha modificato tale processo in modo da ridurre il numero di messaggi da scambiare durante l'handshake, il che risulta in minore elaborazione, minor traffico di pacchetti e maggiore efficienza rispetto alle versioni precedenti del TLS.
Schema di nomenclatura
Ogni suite di cifratura viene identificata con un nome univoco che consente anche di descrivere da quali algoritmi è composta. Ogni porzione del nome rappresenta, in una sequenza ordinata, il nome di ciascuno degli algoritmi compresi nella suite. Un esempio di nome è: TLS_RSA_WITH_3DES_EDE_CBC_SHA256
Il significato di questo nome va letto in questo modo:
TLS definisce il protocollo a cui la suite è destinata; in questo caso si tratta di TLS.
RSA indica l'algoritmo di scambio delle chiavi utilizzato. Questo algoritmo si usa per determinare se e in che modo il client e il server si autenticano reciprocamente durante l'handshake.
3DES_EDE_CBC indica il tipo e la modalità della cifratura a blocchi usata per codificare il flusso di messaggi.
SHA256 indica l'algoritmo di message authentication code usato per garantire l'integrità e l'autenticità del messaggio, basato su una chiave a 256 bit.
Handshake completo: negoziazione delle suite di cifratura
Per attivare la crittografia, il client e il server devono concordare la suite di cifratura specifica da usare nello scambio dei messaggi. Chiaramente sia il client che il server devono supportare la suite di cifratura prescelta; se non c'è concordanza sulla suite da usare, non viene stabilita alcuna connessione. Il processo di selezione avviene durante la fase iniziale della connessione tramite il protocollo di TLS Handshake. La versione TLS 1.3 prevede un protocollo di TLS Handshake diverso rispetto alle versioni passate e a quella attuale di TLS/SSL.
Dopo aver negoziato quale suite di cifratura usare, il server e il client mantengono comunque la possibilità di modificare i cifrari concordati usando il protocollo ChangeCipherSpec nell'handshake in corso oppure in un nuovo handshake.
Per verificare quali cifrari TLS supporta un server, è possibile usare uno scanner SSL/TLS.
MCMX