Il protocollo di comunicazione DTLS (Datagram Transport Layer Security) è poco conosciuto e tenuto spesso al margine nell’ambito della network security eppure può rivelarsi molto utile per garantire la sicurezza del traffico dati levando carico di lavoro ai sistemi di difesa del sistema operativo.
Si sa, infatti, che mantenere un elevato livello di sicurezza è molto importante quando ci si connette a Internet e si utilizzano dispositivi e servizi di ogni tipo che rappresentano una manna per eventuali malintenzionati. Quest’ottica di difesa va ovviamente applicata lato client, ma è ancor più importante lato server in quanto per questi ultimi la fornitura di un servizio in produzione diventa molto più sensibile che in una consultazione client.
Indice degli argomenti
Il protocollo DTLS migliora la sicurezza dei server
Per capire in che modo il protocollo DTLS può tornare utile per migliorare la sicurezza del traffico dati, partiamo dal presupposto che potremmo avere molti dispositivi collegati a un server. I servizi locali, inoltre, possono essere molteplici e usati per ospitare pagine web, Cloud Storage o servizi di backup per altre apparecchiature: sono molti gli usi che possiamo attribuire ai server e sono molto diverse le loro caratteristiche di carico, in funzione delle applicazione con i loro obbiettivi.
Tuttavia, indipendentemente dal fatto che siano utenti domestici o aziendali, dobbiamo sempre porre estrema attenzione alla sicurezza e impedire che i dati vengano compromessi, impedire a possibili intrusi di accedere ai nostri account o ancora più importante mettere a rischio la privacy e i dati sensibili.
L’esempio classico che possiamo citare di attacchi contro un server sono gli attacchi Man-in-The-Middle che consentono la raccolta di informazioni non crittografate. Possono sostanzialmente ascoltare tutto ciò che viene inviato e ricevuto e questo potrebbe mettere a rischio i dati del server stesso, gli utenti che si connettono e le comunicazioni in transito.
Per venire in contro a determinate necessità di sicurezza potremmo avvalerci, per l’appunto, del protocollo DTLS che offre un ulteriore livello di sicurezza per le nostre comunicazioni in quanto consente di crittografare le comunicazioni broadcast e impedire che i contenuti che inviamo o riceviamo vengano filtrati.
Come funziona il protocollo DTLS
Banalmente, prendiamo come esempio l’utilizzo di un programma per comunicare tra un client e un server. Se tale comunicazione non fosse crittografata, attraverso un attacco Man-in-The-Middle potrebbero verificarsi intercettazioni, i contenuti potrebbero essere modificati e verrebbe compromesso il traffico dati, non importa se stiamo inviando messaggi di testo, e-mail, utilizzando i social network o inviando informazioni attraverso il web.
Nel tempo sono nati protocolli che ci aiutano a preservare l’integrità dei dati: per esempio, il protocollo HTTPS è utilizzato per impedire che le informazioni che inviamo in un modulo web vengano intercettate su una rete non sicura.
Qualcosa di simile fa il protocollo DTLS e cioè fornire privacy nelle comunicazioni tipo broadcasting. UDP è il protocollo incaricato allo scambio di datagrammi che possiamo inviare attraverso la rete senza avere preventivamente una connessione. Ciò è possibile poiché questi datagrammi contengono già le informazioni necessarie, e UDP è un protocollo senza connessione e senza controllo.
Il protocollo DTLS serve a fornire una maggiore privacy e sicurezza per queste comunicazioni di tipo broadcasting. In questo modo il client può comunicare con il server senza il rischio che un malintenzionato possa ascoltare e compromettere i dati in transito.
Utilizzare il protocollo DTLS può aiutarci in quella parte di trasmissione dati che molte volte viene trasmessa in modo incontrollato a causa della natura stessa del protocollo UDP. Il protocollo DTLS è definito nelle specifiche RFC4347 e RFC6347. Vediamo di seguito una sintesi dello scambio d’intestazione e come si comporta la comunicazione.
Protocollo DTLS e TLS: similitudini e differenze
Il protocollo DTLS si basa principalmente sul protocollo TLS che agisce crittografando le connessioni e mantiene sempre al sicuro il traffico dati. DTLS è un protocollo molto presente nella rete per la navigazione in Internet ma talvolta viene dimenticato il valore aggiunto che regala.
Tuttavia, c’è un’importante differenza tra DTLS e TLS, a dispetto di un nome molto simile: il primo, infatti, usa comunicazione di tipo UDP (User Datagram Protocol), mentre il secondo usa TCP (Transmission Control Protocol).
DTLS è ampiamente utilizzato in programmi e servizi suscettibili di ritardi, che sono quelli che utilizzano i datagrammi, per esempio le VPN. Inoltre DTLS è progettato per essere molto simile al protocollo TLS in generale ma senza dimenticare la sua natura di comunicazione senza connessione. In sintesi, consentirà sia al client che al server di comunicare in modo broadcast evitando che le informazioni vengano modificate da malintenzionati.
Ma soffermiamoci un attimo su queste divergenze: SSL/TLS è progettato per funzionare su un canale di trasporto affidabile (in genere TCP). SSL/TLS non può tollerare la perdita di dati e record di dati fuori sequenza. Se un record di dati arriva fuori sequenza, potrebbe non essere decifrato correttamente con un errore di verifica MAC.
Cosa succede, invece, se un’applicazione è basata su UDP? Il record di dati può essere fuori sequenza o può essere perso, ma quindi cosa succede se la sicurezza dei dati di questo tipo di trasmissione deve essere garantita? Questo è il motivo per cui DTLS è stato progettato.
DTLS è basato su TLS ma con alcune modifiche per adattarsi alle comunicazioni di tipo broadcast. Questi cambiamenti includono:
- aggiunge il campo del numero di sequenza esplicito da registrare. Ciò garantisce che i dati possano essere riordinati correttamente quando sono fuori sequenza. In TLS, il numero di sequenza è nel record crittografato MAC e può essere verificato solo dopo essere de-crittografato. In DTLS, questo non è possibile poiché i dati potrebbero andare persi;
- elimina il supporto di alcune suite di crittografia utilizzate in TLS. I codici a flusso sono vietati in DTLS poiché la de-crittografia dei dati nel codice a flusso dipende dai dati de-crittografati in precedenza. Questi codici non possono essere utilizzati in DTLS poiché i dati potrebbero andare persi. In genere, RC4 non può essere utilizzato in DTLS;
- aggiunge meccanismi di ritrasmissione in caso di perdita di pacchetti. C’è un timer di ritrasmissione che ritrasmetterà un pacchetto dopo un certo ritardo se il lato mittente non ottiene la risposta corretta;
- modifica il meccanismo di avviso per l’errore di verifica MAC. In TLS, se una verifica MAC fallisce, verrà inviato un errore fatale e la connessione verrà invalidata. In DTLS se una verifica MAC fallisce, il metodo consigliato è semplicemente eliminare il record ricevuto senza interrompere la connessione;
- viene aggiunto un nuovo record chiamato “HelloVerifyRequest”. Questo record è progettato per prevenire attacchi DoS poiché i protocolli di sicurezza dei dati ne sono vulnerabili. HelloVerifyRequest verrà utilizzato per identificare il mittente del ClientHello non falsificato con IP non validi. HelloVerifyRequest è progettato per essere piccolo e contiene un cookie utilizzato per identificare il client. Dopo che il client ha inviato il messaggio ClientHello, il server dovrebbe rispondere con un HelloVerifyRequest e quindi il client invierà nuovamente il ClientHello con il cookie di HelloVerifyRequest allegato, a seguire si procede con il handshake.
I molteplici utilizzi del protocollo DTLS
I datagrammi sono ampiamente utilizzati nei servizi di streaming, per esempio su server che trasmettono video in rete. È presente anche sui server di gioco online dove la banda sembra non essere mai abbastanza o su servizi di videoconferenza dove la parte dura del lavoro viene fatta dai codec video ma la velocità di trasmissione è anch’essa una parte delicata del servizio.
Va menzionato anche un altro aspetto importante e cioè che DTLS come UDP non garantisce l’ordine di consegna dei messaggi, né garantirà che i messaggi vengano mai consegnati, stesso comportamento del protocollo UDP. Tuttavia, presenta i vantaggi dei protocolli Datagram, come un carico inferiore e una latenza ridotta.
La chiave di svolta per la tecnologia WebRTC
Le caratteristiche del protocollo DTLS sono molto importanti per la tecnologia WebRTC. Sappiamo già che si tratta di un progetto che offre ai browser web e alle applicazioni mobili la possibilità di comunicare in tempo reale. È ampiamente utilizzato in alcuni programmi e “plugin” come quelli per le videochiamate.
In questo senso, tutti i protocolli relativi a WebRTC come SCTP, SRTP e STUN talvolta necessitano di DTLS per poter crittografare i propri contenuti.
Conclusioni
In breve, quindi, DTLS è un protocollo per crittografare le comunicazioni che può tornare utile per server, applicazioni e servizi soprattutto legati alle videochiamate o alle piattaforme in cui si necessita lo scambio veloce d’informazioni. Consente di crittografare tutte queste comunicazioni e quindi impedire a possibili intrusi di interferire e vedere ciò che transita.
È sempre molto importante proteggere i nostri sistemi e le nostre apparecchiature. Dobbiamo disporre di programmi di sicurezza, tenerli aggiornati e tenere a mente il buon senso e non commettere errori, ma è anche fondamentale utilizzare applicazioni affidabili, che dispongano di protocolli adeguati per evitare perdite in modo che tutto funzioni correttamente. Servirsi e fare implementazioni che rimpiazzino nella misura del possibile il protocollo UDP con il DTLS da un valore aggiunto all’impegno per la cyber security.