Protocolli crittografici SSL/TLS e sicurezza sulle reti

La comunicazione via e-mail o l’utilizzo di servizi sul web di più recente diffusione, come l’e-commerce e home-banking/online banking, rappresentano abitudini ormai consolidate ad elevata richiesta di sicurezza per gli utenti di Internet su scala globale. Con l’affermarsi del paradigma dell’Internet of Things, che permette lo scambio di informazioni tra oggetti, la sicurezza delle connessioni su una rete è un aspetto ancor più cruciale.

In questo ambito esistono due protocolli crittografici, SSL Secure Sockets Layer e TLS Transport Layer Security, ideati con lo scopo di fornire canali di comunicazione sicuri tra dispositivi connessi, per la riservatezza, autenticazione e integrità delle informazioni, ovvero l’impossibilità per terzi di leggere le informazioni scambiate, la verifica dell’identità delle parti della comunicazione e la non alterazione delle informazioni trasmesse.

Si tratta di versioni diverse di uno stesso protocollo: TLS 1.0 è stata rilasciata nel 1999 come avanzamento dell’SSL 3.0, dopo la standardizzazione ufficiale da parte della comunità di esperti di SSL, protocollo open prodotto dalla statunitense Netscape Communications Corporation nel 1994 e già largamente adottato. L’ultima versione di TLS è la 1.2 del 2008.

SSL/TLS si collocano tra i protocolli di trasporto (TCP) e i protocolli applicativi (HTTP, MTP, FTP). Tra le applicazioni più diffuse, HTTPS garantisce la sicurezza del browser per il web, SMTP quello dello scambio di e-mail.

La riservatezza è garantita attraverso la cifratura dei dati. Il protocollo prevede l’impiego di crittografia simmetrica e asimmetrica durante le diverse fasi della comunicazione. La crittografia a chiave pubblica, o asimmetrica interviene durante la fase che precede la comunicazione vera e propria, nota come handshake. Con questa tecnica viene anche cifrata la comunicazione di numeri casuali per la generazione della chiave segreta, usata nella fase successiva, e un numero particolare detto PreMaster Secret. Durante lo scambio dei dati di applicazione, viene usato il metodo di crittografia simmetrica o a chiave segreta, calcolata dai numeri casuali e dal Pre-Master Secret scambiati nella fase precedente.

L’autenticazione è garantita dai certificati digitali, scambiati durante la fase di handshake. SSL/TLS prevede l’autenticazione del server verso il client, e opzionalmente anche la verifica in verso opposto, indicata come mutua autenticazione. Il certificato digitale, rilasciato da una Certification Authority, contiene informazioni sull’identità del soggetto (persona o organizzazione) e una chiave pubblica ad esso attribuita.

L’integrità dei dati è garantita associando la trasmissione dei dati al MAC, o Message Authentication Code, un hash crittografico, ovvero un insieme di bit calcolato sui dati a cui è associato. Il calcolo viene effettuato dal ricevente sui dati ricevuti, ed eventuali differenze tra il codice di invio e di ricezione segnalano l’alterazione dei dati durante la trasmissione.

Il canale di comunicazione sicuro viene impostato e stabilito durante la fase di handshake, in cui avviene una negoziazione tra Client e Server della rete sulla versione di protocollo SSL/TLS, , metodo di compressione e suite di codici (che definisce l’algoritmo per lo scambio delle chiavi, l’algoritmo di cifratura e di MAC), identificativo ID di sessione e altre informazioni.

La comunicazione di handshake si svolge secondo uno schema preciso:

C to S – ClientHello: informazione sulla versione più recente di SSL/TLS supportata, lista di algoritmi di cifratura e di compressione supportati, un numero a 32 bytes generato casualmente, per la creazione successiva di una chiave segreta.

S to C – ServerHello: scelta sulla versione di protocollo, algoritmo di cifratura e di compressione, e ulteriore numero random per la chiave segreta. Sono state fatte scelte per la trasmissione dei dati.

S to C – ServerKeyExchange: Server Certificate, certificato digitale per dimostrare la propria identità.

S to C – ServerHelloDone: fase di negoziazione completata.

Il Client verifica la validità del certificato ricevuto. Tale documento è pubblico e fino a questo punto la comunicazione non è protetta.

C to S – ClientKeyExchange: Il contenuto dipende dall’algoritmo crittografico scelto. Può contenere una parte di chiave segreta (PreMasterSecret), la chiave pubblica, o niente.

Il Client e il Server calcolano la chiave segreta comune, MasterSecret, usando i numeri casuali scambiati all’inizio e il PreMasterSecret. Il MasterSecret viene usato per generare il MAC e la chiave crittografica per la sessione.

C to S – record ChangeCipherSpec: ogni comunicazione successiva sarà protetta secondo chiavi e modalità concordate.

C to S: messaggio “finished” autenticato e cifrato, contenente un hash e un MAC calcolati sui messaggi di handshake precedentemente inviati.

Il Server prova a decifrare il messaggio “finished” e a verificare hash e MAC. Se il processo fallisce l’handshake non termina e si conclude la connessione. Infine il server invia specularmente il record ChangeCipherSpec e il messaggio “finished”, sul quale il client esegue analoga verifica e codifica. Al termine di queste operazioni è impostato il canale sicuro per la comunicazione.

Altri articoli dell'autore

Advertisment

Puoi leggere anche...

567FansLike
1,441FollowersFollow

Ultime notizie

Agroalimentare e la sua filiera

I lettori di Sentieri Digitali hanno avuto modo di comprendere l’impegno costante per un settore così strategico del nostro Paese e dell’Europa. Nell’ambito della...

L’acqua

L’acqua vuol dire vita e quindi è un bene primario. Senza fare polemiche è ben rappresentare che la rete idrica del nostro paese a dir...

Comunità Energetica

Il Clean Energy for Europe Package è basato su una proposta della Commissione Europea del Novembre 2016 e definisce gli obiettivi e la strategia...

Vuoi avere le notizie aggiornate ogni mercoledi?

Iscriviti alla newsletter

LinkedIn
LinkedIn
Share