Quanto sono sicure le VPN?

(di Alessandro Rugolo)
27/06/22

Con questo breve articolo cercherò di dare una risposta alla domanda che mi è stata posta qualche giorno fa: "Quanto è sicura una VPN?" Con l'occasione affronterò anche due argomenti preliminari, senza la conoscenza dei quali non è possibile capire di cosa si parli: cosa significa VPN e come funziona. Le risposte dovrebbero essere relativamente semplici ma non diamo niente per scontato e proviamo a capire, come sempre, di cosa parliamo.

Per essere certi di non sbagliare vediamo che ci dice in proposito uno dei più grandi fornitori di servizi di rete al mondo, CISCO: "A virtual private network, or VPN, is an encrypted connection over the Internet from a device to a network. The encrypted connection helps ensure that sensitive data is safely transmitted. It prevents unauthorized people from eavesdropping on the traffic and allows the user to conduct work remotely. VPN technology is widely used in corporate environments."

Abbiamo già scoperto che con l'acronimo VPN ci si riferisce ad una "Virtual Private Network" come ad una connessione cifrata tra un dispositivo (PC, tablet, smartphone...) ed una rete (generalmente una rete aziendale), il tutto poggiato su Internet. La connessione cifrata aiuta ad assicurare che i dati siano trasmessi in modo sicuro. 
La VPN previene l'intercettazione del traffico dati da parte di persone non autorizzate e consente agli utilizzatori della stessa di lavorare da remoto.

Quelle che ho messo in evidenza sono le caratteristiche principali di una VPN. Prima di proseguire vediamo di fare un esempio di VPN pre-Internet. Tutti ricordiamo che da bambini a scuola capitava spesso di dover comunicare qualcosa al compagno di classe che si trovava due file avanti. Dopo aver provato a comunicare, magari chiamandolo a voce bassa, attirando così l'attenzione della maestra e perciò venendo ripreso, ci si inventava metodi meno rumorosi.

Il primo metodo che io stesso impiegavo consisteva nello scrivere il messaggio all'interno di un foglietto, piegarlo in quattro e scrivere il nome del destinatario del messaggio sopra il foglio piegato, quindi toccare la spalla del primo compagno che si trovava in direzione del destinatario e chiedere con un cenno di testa di inoltrare il messaggio. 
Vorrei far notare che in questo esempio la classe fungeva da rete Internet, ogni compagno era in effetti un nodo della rete. Il foglietto era il supporto dei dati importanti (dopo la scuola andiamo a farci il bagno al fiume?). Piegare il foglio in quattro garantiva un minimo di sicurezza (molto poca lo ammetto!). Il nome del destinatario scritto sopra era l'informazione che serviva per fare arrivare il messaggio a destinazione.

Sistema funzionante con un presupposto, tutti i compagni sono tra loro amici e nessuno è curioso.

Come immagino abbiate sperimentato anche voi in occasioni simili, pensare che tutti siano amici e che nessuno curiosi è bello dal punto di vista umano ma assolutamente irreale. 
Ciò che spesso accadeva in questa Internet primordiale era che uno dei nodi (un compagno curioso) invece di trasmettere il messaggio verso il compagno successivo, lo apriva e lo leggeva, e solo dopo, nella migliore delle ipotesi, lo richiudeva e lo inoltrava verso il vero destinatario.

La soluzione da me adottata, e immagino da tanti di voi che leggete, era semplice, era una VPN. Certo, analogica, ma sempre di VPN si tratta. La VPN funzionava così. 
Siccome il destinatario dei miei messaggi era il mio compagno con cui giocavamo tutti i giorni a pallone, ci mettemmo d'accordo per usare dei messaggi cifrati. Il nostro cifrario era abbastanza semplice, si trattava semplicemente di sostituire ad una lettera un'altra secondo uno schema sul quale ci eravamo accordati.

Oggi so che si trattava del cifrario di Cesare ma allora poco importava, l'importante era che funzionasse. E funzionava... c'era sempre chi per curiosità apriva il foglietto ma in genere non era in grado di capire cosa ci fosse scritto. In pratica con l'aggiunta della cifratura avevamo realizzato una vera e propria VPN, senza saperlo!

Oggi le VPN vengono usate per connettere in modo sicuro un PC collegato tramite internet ad una rete aziendale. Il PC esterno alla rete, collegato ad internet, stabilisce una connessione sicura con un server di servizio VPN utilizzando un protocollo sicuro (solitamente si usa il TLS).

Ora, la domanda cui vorremo rispondere è la seguente: quanto è sicura una VPN?

Dopo aver capito cos'è e come funziona, vediamo di capire qualcosa di più sulla sicurezza di una VPN.
È facile capire che vi sono molti fattori in gioco nel valutare il livello di sicurezza della VPN. Proviamo assieme a capire i punti deboli.

La cifratura

Uno dei fattori importanti è il tipo di cifratura che si utilizza. Come ho accennato prima, io da ragazzo usavo il cifrario di Cesare, un algoritmo crittografico tra i più semplici, che consiste nel sostituire ad una lettera un'altra lettera dello stesso alfabeto, come potete vedere dalla figura.

Le cose funzionavano abbastanza bene ma non era difficile capire come decifrare il messaggio ed inoltre esisteva sempre la possibilità che qualche compagno particolarmente dispettoso prendesse il foglietto e lo tenesse per se.

Allo stesso modo una delle caratteristiche delle VPN è l'algoritmo di cifratura che viene utilizzato per la cifratura dei dati e per stabilire il percorso migliore per raggiungere il destinatario. Siccome gli algoritmi utilizzati dalle VPN sono diversi, è chiaro che anche la sicurezza delle VPN è diversa.

In linea di massima possiamo dire che una VPN richiede l'uso di un algoritmo di cifratura (per cifrare e decifrare i dati) e di un protocollo sicuro per stabilire e mantenere il canale di comunicazione (handshake encription protocol).

Uno degli algoritmi di cifratura più utilizzato nella storia delle VPN per stabilire il canale cifrato si chiama RSA-1024 (Rivest-Shamir-Adleman). Esistono ancora delle VPN che ne fanno uso nonostante già dal 2014 l'algoritmo sia stato craccato dalla NSA americana (o almeno così si dice). Oggi molti algoritmi fanno uso di RSA-2048, dove il numero indica la lunghezza in bit della chiave di cifratura. Teoricamente la cifratura fornita da RSA-2048 è resistente ad attacchi di tipo "Brute Force" in quanto richiederebbe troppo tempo per essere eseguito, ma ricordo anche che tale tipo di attacco non è l'unico possibile, la nascita e la sempre più costante diffusione dei computer quantistici sta mettendo in dubbio l'effettiva validità degli algoritmi di cifratura basati sulla scambio di chiavi.

Negli ultimi anni vi è una vera e propria corsa allo studio degli algoritmi cosiddetti "post quantum", ovvero che possono resistere ad attacchi di forza bruta effettuati da computer quantistici. Se prendiamo ad esempio OpenSSH, si è deciso di introdurre la versione 9 basata su un algoritmo post quantum.

Poco sopra ho detto che RSA-1024 è stato probabilmente craccato, riprendo solo per un attimo il concetto perché introduce una necessaria precisazione: quando parliamo di quanto sia sicura una VPN non esiste una risposta unica in quanto dipende da chi fa la domanda. A premessa di una qualunque risposta semiseria alla questione dobbiamo ricordare la necessità di un Risk Assessment cioè della valutazione del rischio associato alla impresa di cui parliamo.

Non voglio entrare in tecnicismi ma farò un esempio giusto per capire di che si tratta. Se la nostra società si occupa di produzione di parti di macchine industriali per una certa zona del mondo, supponiamo per l'Italia, ed ha necessità di usare una VPN per le sue comunicazioni, sarebbe buona cosa evitare di usare VPN di una società in qualunque modo legata alle sue dirette concorrenti sul mercato. Purtroppo non sempre è facile capire di chi ci si può fidare e di chi no. La mia regola è che non mi fido di nessuno, ma questa è un'altra storia.

Per tornare alle VPN, uno dei protocolli standard più utilizzati ai giorni nostri è OpenVPN. Si tratta di un protocollo open source che può quindi essere studiato e analizzato pubblicamente da chiunque ne abbia le capacità, l'interesse e la voglia di farlo.

Come sempre, occorre tenere conto di ulteriori fattori, legati al mondo digitale. Tutti i sistemi, software, hardware o qualunque mix dei due si possa concepire, sono soggetti a:
- vulnerabilità dovute alla cattiva produzione;
- errori dell'uomo, utilizzatore o tecnico che sia, nella configurazione e nell'uso (questo è il caso più comune in quanto l'uso di una VPN non elimina il rischio di furto di credenziali, anzi, probabilmente lo aumenta creando nell'utilizzatore una falsa aspettativa di sicurezza).

Se volete farvi un'idea delle vulnerabilità di OpenVPN, solo a titolo d'esempio, potete consultare questo elenco: Openvpn - Security vulnerabilities (cvedetails.com).

Per concludere, dopo aver provato a spiegare in maniera più semplice possibile cosa sia una VPN e aver accennato ad alcune questioni di base, proverò a dare una risposta alla domanda dalla quale siamo partiti: quanto sono sicure le VPN?

La risposta più semplice è: meglio che trasmettere in chiaro.

La risposta più seria è: dipende dal contesto.

La risposta più completa è: per poter dire qualcosa di sensato occorre fare un risk assessment e poi potremo scegliere una VPN adatta al contesto strategico, tecnologico e organizzativo in cui ci troviamo!

La VPN aumenta la sicurezza, ma aumenta anche il perimetro di sicurezza e quindi aumentano i rischi. Non dobbiamo mai dimenticare che la sicurezza dipende dall'anello più debole della catena e solitamente questo è l'uomo!

Ringrazio, come sempre, gli amici di SICYNT per l'aiuto e i suggerimenti. Nella mia esposizione ho scelto di semplificare per cui ho rinunciato appositamente a parlare di autenticazione e di integrità, concetti importanti ma che avrebbero reso l'articolo meno chiaro. Avremo altre occasioni per farlo.

Per approfondire: