Chi sta cercando di rendere più sicura, e più privata, la propria connessione a Internet e la navigazione sul Web avrà certamente sentito dire che un buon modo per navigare sicuri è quello di usare una "Virtual Private Network", cioè una rete privata virtuale (spesso e volentieri abbreviata in VPN). I vantaggi della VPN, infatti, sono molteplici: si va dalla sicurezza della trasmissione dei dati, grazie alla crittografia, fino alla garanzia dell'anonimato online, grazie al mascheramento del nostro indirizzo IP.
Quello che invece molti non sanno è che l'intrinseca sicurezza di una VPN rispetto ad una connessione tradizionale deriva principalmente dall'utilizzo di un protocollo (anzi: una serie di protocolli interoperanti) chiamato "IPSec". Si tratta di uno standard aperto, oggi inserito all'interno della suite di protocolli IPv4, che però ha una storia molto particolare: la sua nascita la dobbiamo, infatti, ad una precisa spinta da parte del DARPA, la Defence Advanced Research Projects Agency e dell'NSA, la National Security Agency degli Stati Uniti.
E la cosa ancora più interessante è che, secondo quanto dichiarato dal notissimo "leaker" di molti segreti cibernetici, Edward Snowden, ad un certo punto la NSA ha persino tentato di inserire delle vulnerabilità all'interno di IPSec per poter spiare le connessioni VPN.
Come è nato IPSec
Nell'era pre-Internet c'era Arpanet, il progetto nato nel 1969 per volere del "solito" DARPA, l'agenzia del Dipartimento della Difesa degli Stati Uniti che si occupa dello sviluppo di nuove tecnologie militari. Era una rete di computer realizzata per mettere in collegamento diverse strutture militari, che poi si è evoluta in un sistema in grado di far comunicare anche le università e gli uffici governativi. Già allora, però, il DARPA intuì che era necessario proteggere le connessioni e iniziò a sponsorizzare una serie di device per la crittografia delle connessioni tra strutture militari.
Successivamente, nella seconda metà degli Anni '80, la NSA ha promosso lo sviluppo di una serie di protocolli per la crittografia dei dati sulla neonata Internet: si tratta del programma Secure Data Network Systems (SDNS). La ricerca andò ancora avanti, passando dal Security Layer Protocol 3 (SP3) al Network Layer Security Protocol (NLSP), tanto che, già a inizio Anni '90, il primo nucleo di protocolli della suite IPSec era già disponibile.
Come funziona IPSec
Alla base di IPSec ci sono diversi protocolli di crittografia dei dati e degli indirizzi IP. Quando due computer vogliono instaurare una connessione privata VPN, infatti, per prima cosa devono "mettersi d'accordo" su quale crittografia usare e scambiarsi le relative chiavi di sicurezza per decriptare in arrivo i dati criptati in invio lungo la trasmissione. IPSec si occupa proprio di gestire tutto questo processo.
Per prima cosa procede ad autenticare i dati, per garantire che le informazioni scambiate siano autentiche e non siano state manomesse da qualcuno che è riuscito a introdursi nella comunicazione tra il computer A e il computer B (ossia, la connessione sia stata oggetto di un attacco man in the middle). Poi procede a crittografare l'intero traffico dati, in modo che esso non sia visualizzabile "in chiaro" senza l'utilizzo della chiave corretta.
Riesce anche a proteggere la connessione dai cosiddetti "Replay attack", cioè gli attacchi da parte di chi è riuscito ad impossessarsi di almeno una delle credenziali di autenticazione. IPSec mette anche al sicuro la chiave della crittografia usata tra i due computer. I metodi di funzionamento di IPSec sono due: "tunnel" e "transport". In modalità tunnel tutto il pacchetto dati, indirizzo IP incluso, viene crittografato mentre in modalità transport vengono crittografati solo i dati scambiati.
I protocolli principali di IPSec
Per fare tutto ciò, e per farlo in maniera efficiente e sicura, IPSec usa diversi protocolli. Ecco perché IPSec viene definito una suite di protocolli di sicurezza. I due protocolli principali usati da IPSec sono IPSec Authentication Header (AH) e Encapsulating Security Payload (ESP). Il protocollo IPSec Authentication Header viene utilizzato per proteggere gli indirizzi IP dei computer interessati dalla trasmissione sicura e per garantire che i bit di informazioni non vengano persi, modificati o danneggiati durante la trasmissione. Il protocollo AH verifica inoltre che la persona che ha inviato i dati li abbia effettivamente inviati, proteggendo la trasmissione da infiltrazioni da parte di utenti fraudolenti o comunque non autorizzati.
Encapsulating Security Payload (ESP) è il protocollo che gestisce la crittografia vera e propria di IPSec, garantendo la riservatezza del traffico dati tra dispositivi. Questo protocollo serve anche a mascherare il traffico Internet, in modo che chiunque guardi al "tunnel" non possa avere evidenza dei dati effettivamente scambiati.