Transport Layer Security

Da Wikipedia, l'enciclopedia libera.

Transport Layer Security (TLS) e il suo predecessore Secure Sockets Layer (SSL), nel campo delle telecomunicazioni e dell'informatica, sono dei protocolli crittografici che permettono una comunicazione sicura dal sorgente al destinatario (end-to-end) su reti TCP/IP (come ad esempio Internet) fornendo autenticazione, integrità dei dati e cifratura operando al di sopra del livello di trasporto.

Diverse versioni del protocollo sono ampiamente utilizzate in applicazioni come i browser, l'e-mail, la messaggistica istantanea e il voice over IP. Un esempio di applicazione di SSL/TLS è nel protocollo HTTPS.

Storia[modifica | modifica wikitesto]

Lo stack protocollare TCP/IP di Internet, diversamente dal modello ISO-OSI, non prevede di per sé funzionalità di sicurezza per motivi storici legati all'uso principale della rete ai suoi primordi (semplice scambio di dati tra ricercatori nella comunità scientifica), e solo successivamente con l'apertura della Rete a fini pubblici le problematiche di sicurezza sono diventate via via sempre più importanti da cui la necessità di inserire degli strati aggiuntivi che si occupino appunto di sicurezza[1].

Le prime implementazioni di SSL erano limitate a cifratura a chiave simmetrica di soli 40 bit a causa delle restrizioni imposte dal governo statunitense sull'esportazione di tecnologie crittografiche, per motivi di sicurezza nazionale. In altri termini la limitazione della dimensione delle chiavi a 40 bit è stata esplicitamente imposta per rendere la cifratura abbastanza debole da potere essere forzata (tramite l'uso di tecniche di ricerca brute force) dalle autorità giudiziarie che volessero decifrare il traffico cifrato, ma sufficientemente resistente agli attacchi da parte di entità con minori disponibilità di risorse tecnologico-finanziarie. Dopo diversi anni di controversie pubbliche, cause e l'ammissione da parte del governo americano di disponibilità sul mercato di prodotti per la cifratura 'migliori' (sia all'interno che al di fuori degli Stati Uniti), alcuni aspetti delle restrizioni sono stati modificati. Le implementazioni moderne utilizzano chiavi per la cifratura simmetrica a 128 (o più) bit.[2][3]

TLS è stato in seguito esteso da altri RFC, tra i quali:

  • RFC 2712: "Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)". Illustra come le cifrature a 40 bit siano ormai superate.
  • RFC 2817: "Upgrading to TLS Within HTTP/1.1", Spiega come utilizzare il meccanismo di Upgrade in HTTP/1.1 per inizializzare il Transport Layer Security (TLS) su di una connessione TCP esistente. Questo permette di condividere la stessa well known port tra traffico HTTP normale e sicuro.
  • RFC 2818: "HTTP Over TLS". Differenziare il traffico sicuro da quello non sicuro tramite l'uso di una porta differente del server.
  • RFC 3268: "AES Ciphersuites for TLS". Aggiunta di migliorie come l'Advanced Encryption Standard (AES), l'International Data Encryption Algorithm (IDEA), il Data Encryption Standard (DES) e il Triple DES.

Anche se attualmente un numero sempre maggiore di prodotti client e server supportano TLS o SSL in modo nativo, esistono ancora molti prodotti che non supportano tali protocolli. In questi casi è possibile fare uso di prodotti che forniscono una cifratura SSL a sé stante.

Descrizione[modifica | modifica wikitesto]

Il protocollo TLS consente alle applicazioni client/server di comunicare attraverso una rete in modo tale da prevenire il 'tampering' (manomissione) dei dati, la falsificazione e l'intercettazione. È un protocollo standard IETF che, nella sua ultima versione, è definito nella RFC 5246, sviluppata sulla base del precedente protocollo SSL da Netscape Communications.

Nell'utilizzo tipico di un browser da parte di utente finale, l'autenticazione TLS è unilaterale: è il solo server ad autenticarsi presso il client (il client, cioè, conosce l'identità del server, ma non viceversa cioè il client rimane anonimo e non autenticato sul server). L'autenticazione del server è molto utile per il software di navigazione e per l'utente. Il browser valida il certificato del server controllando che la firma digitale dei certificati del server sia valida e riconosciuta da una certificate authority conosciuta utilizzando una cifratura a chiave pubblica. Dopo questa autenticazione il browser indica una connessione sicura mostrando solitamente l'icona di un lucchetto. Questa autenticazione, però, non è sufficiente per garantire che il sito con cui ci si è collegati sia quello richiesto. Per esserne sicuri è necessario analizzare il contenuto del certificato rilasciato e controllarne la catena di certificazione. I siti che intendono ingannare l'utente non possono utilizzare un certificato del sito che vogliono impersonare perché non hanno la possibilità di cifrare in modo valido il certificato, che include l'indirizzo, in modo tale che risulti valido alla destinazione. Solo le CA possono generare certificati validi con un'URL incorporata in modo che il confronto fra l'URL apparente e quella contenuta nel certificato possa fornire un metodo certo per l'identificazione del sito. Molto spesso questo meccanismo non è noto agli utenti di internet ed è causa di varie frodi dovute ad un uso non corretto del browser, non ad una debolezza del protocollo TLS.

Il protocollo TLS permette anche un'autenticazione bilaterale, tipicamente utilizzata in applicazioni aziendali, in cui entrambe le parti si autenticano in modo sicuro scambiandosi i relativi certificati. Questa autenticazione (definita Mutual authentication) richiede che anche il client possieda un proprio certificato digitale cosa molto improbabile in un normale scenario.

In assenza di un'autenticazione bilaterale si possono utilizzare i protocolli TLS-PSK o Secure remote password (SRP) per garantire un'autenticazione sicura in assenza di un certificato.

Principi di funzionamento[modifica | modifica wikitesto]

Fasi[modifica | modifica wikitesto]

Il funzionamento del protocollo TLS può essere suddiviso in tre fasi principali:

Nella prima fase, il client e il server negoziano il protocollo di cifratura che sarà utilizzato nella comunicazione sicura, il protocollo per lo scambio delle chiavi e l'algoritmo di autenticazione nonché il Message authentication code (MAC). L'algoritmo per lo scambio delle chiavi e quello per l'autenticazione normalmente sono algoritmi a chiave pubblica o, come nel caso di TLS-PSK, fanno uso di una chiave precondivisa (Pre-Shared Key). L'integrità dei messaggi è garantita da un algoritmo di hash che usa un costrutto HMAC per il protocollo TLS o una funzione pseudorandom non standard per il protocollo SSL.

Protocolli impiegati[modifica | modifica wikitesto]

All'interno di una sessione tipicamente vengono utilizzati i seguenti protocolli:

Note[modifica | modifica wikitesto]

  1. ^ Progetto1.qxd
  2. ^ HTTPGuard, un sistema per la rilevazione di attacchi contro Web server
  3. ^ VPN

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]