martedì, Marzo 19, 2024

VPN ovvero Reti Private Virtuali: Tecnologia IPsec v3 – 2a parte

AreaNetworking.it
AreaNetworking.ithttps://www.areanetworking.it
AreaNetworking.it è tra i principali e più storici media italiani del settore ICT. Nato nel 2003 per opera di Federico Lagni, l'attività del gruppo è sia online - con il portale rivolto a figure professionali ICT (IT Manager, CTO, Security Specialist, Datacenter Engineer, etc) - sia offline con l'organizzazione delle più importanti conferenze italiane su temi tecnologici.

Panoramica di tecnologie per realizzare VPN

Per poter realizzare la sicurezza delle trasmissioni mediante una VPN esistono, diversi protocolli appositamente progettati per permettere una trasmissione sicura a vari livelli nella rete. In sostanza è possibile realizzare una VPN praticamente su ogni livello della pila OSI. La scelta di utilizzare un protocollo piuttosto che un altro dipende dai requisiti di sicurezza delle applicazioni e dalle necessità di sicurezza dell’utente, il quale deve decidere a che livello della pila, deve essere implementata la sicurezza nelle trasmissioni offerta da una VPN. In alcuni casi questi protocolli possono fornire una soluzione più adeguata alle esigenze dell’utente rispetto all’utilizzo di una VPN IPsec.
In ogni caso questi protocolli, ognuno con la propria tecnologia di sicurezza, utilizzano tutti dei meccanismi di tunneling e cifratura che incapsulano il pacchetto di dati creandogli attorno una protezione durante la trasmissione e lo de-incapsulano in ricezione.
Questi protocolli di sicurezza, indipendentemente dal livello nella pila OSI o TCP/IP in cui vengono implementati, devono garantire i seguenti servizi base:

  • Gestione delle chiavi (che include la creazione, la negoziazione delle chiavi e il deposito delle chiavi).
  • La Riservatezza (Confidentiality) con la cifratura.
  • Il non ripudio.
  • Integrità/Autenticazione.
  • Autorizzazione.

In base al livello (nella pila OSI o TCP/IP) dove la sicurezza viene implementata, è possibile offrire alcuni o tutti i servizi precedentemente descritti. In alcuni casi, ha senso offrire alcuni di questi servizi/capacità ad un livello della pila e altri servizi/capacità ad un livello differente. Servizi, funzionalità che devono necessariamente essere implementate in alcuni livelli e non in altri, proprio per poter garantire la sicurezza e per la correzione degli errori.

Questo produce velocità di trasmissione e carichi di lavoro differenti alla CPU. La sicurezza implementata su un livello piuttosto che su un altro sono una scelta da parte dell’amministratore.
Comunque, più si sale di livello e più aumenta la quantità di intelligenza e il carico di lavoro che gravano sulla CPU che ogni livello deve avere per la correzione degli errori e come garanzia dei meccanismi di sicurezza.
Le pile a livelli OSI e TCP/IP sono usate per descrivere le modalità di trasferimento dei dati. Mentre la pila OSI è composta di 7 livelli, la pila TCP/IP è composta di quatto livelli. Ogni livello nella pila ha funzioni e capacità ben definite. L’architettura a livelli ha molti vantaggi. Oltre a semplificare la progettazione del protocollo, semplifica anche il suo uso. La progettazione viene semplificata dal fatto che ogni livello interagisce solamente con il livello immediatamente sopra e sotto di esso. Una volta che il livello fornisce un servizio e le sue interfacce vengono identificate, ogni livello può essere progettato indipendentemente dagli altri.
Quando un utente vuole trasferire dati attraverso le reti, i dati passato dal livello più alto attraverso i livelli intermedi al livello più basso, con ogni livello che aggiunge informazioni supplementari.
Ad ogni livello, le unità logiche trasmesse tra livelli sono composte di un header e un payload. Il payload consiste dalle informazioni passate verso il basso dal livello superiore, mentre l’header contiene informazioni specifiche del livello che le trasferisce. Al livello applicazione, il payload sono i dati dell’applicazione.
Il livello più basso invia i dati accumulati attraverso la rete fisica; al ricevente i dati vengono passati in su attraverso i vari livelli verso l’applicativo di destinazione. Essenzialmente, in trasmissione i dati prodotti da un livello sono incapsulati in un più grande contenitore (imbustamento o incapsulamento) e inviati al livello sottostante. In ricezione i dati vengono deincapsulati e inviati al livello superiore. I sette livelli OSI e i quattro livelli del TCP/IP, dal più alto al più basso, sono mostrati nella figura sotto.

I controlli di sicurezza esistono per le comunicazioni di rete ad ogni livello dei modelli OSI o TCP/IP. Come prima spiegato, i dati in trasmissione sono passati dal livello più alto al livello più basso, con ogni livello che aggiunge ulteriori informazioni. A causa di questo, un controllo di sicurezza ad un livello più alto non può offrire una piena protezione per i livelli più bassi, perché i livelli più bassi compiono funzioni delle quali i livelli più alti non sono consapevoli.

Descrizione dei Protocolli di Sicurezza sulla pila OSI e TCP/IP

VPN Application Layer

Il livello Application fornisce i servizi per una applicazione come Domain Name System (DNS), HyperText Transfer Protocol (HTTP), e Simple Mail Transfer Protocol (SMTP) per inviare e ricevere dati sulla rete. La sicurezza del livello Application deve essere implementata sugli host finali. La sicurezza disposta al livello Application ha i seguenti vantaggi:

  • Consente un facile accesso nel contesto dell’utente con le chiavi private come sue credenziali.
  • Consente un accesso completo ai dati che l’utente vuole proteggere (encryption/decryption). Questo semplifica il compito di offrire servizi come il non ripudio, l’integrità e l’autenticazione.
  • Consente di aggiornare una applicazione di sicurezza senza dover dipendere dal sistema operativo per offrire questo servizio di sicurezza. Normalmente, queste applicazioni non hanno il controllo su quello che è implementato nel sistema operativo sopra cui sono installati.
  • Consente al livello applicazione che è in grado di comprendere i dati di offrire una sicurezza adeguata.

La cosa più importante riguardo la sicurezza del livello applicativo è che devono essere progettati dei controlli appositi che gestiscano tutta una serie di sistemi di sicurezza per ciascuna applicazione. La progettazione di un protocollo di crittografia a livello applicativo a prova di vulnerabilità è sempre qualcosa di molto difficile. Ogni applicazione deve definire propri meccanismi di sicurezza.

Questo perché ogni applicazione ha specifiche necessità di servizio e non può dipendere dai livelli più bassi per offrire i necessari controlli e servizi di sicurezza. Un esempio di ciò è il servizio di non-repudiation (Non ripudio). È difficile per i livelli bassi offrire dei servizi di non-repudiation, proprio perché questo tipo di servizio richiede l’accesso ai dati che notoriamente si trovano a livelli superiori. I livelli bassi non hanno accesso ai dati.

Esempi di tali applicativi sono PGP, GNUPG (GPG), SSH (Secure Shell) v.1 e v.2, OpenSSH, e S/MIME.

PGP (Pretty Good Privacy) e la sua versione open source GPG sono dei famosissimi protocolli progettati in origine da Phil Zimmermann che utilizzano meccanismi di firma a chiave pubblica. In combinazione con client E-mail offrono servizi di sicurezza per cifrare, decifrare, firmare, non-ripudio, compressione, conversione in ASCII (base 64), segmentazione e autenticazione per il corpo dei messaggi di posta elettronica ma non per la sua intestazione.

SSH (Secure Shell) e’ un protocollo per eseguire comandi remoti, login remoti, FTP, compressione e trasferimento di traffico di tipo TCP/IP e X Window in modo crittografato e autenticato attraverso una rete insicura. In pratica crea un tunnel di rete crittografato tra due host garantendo l’identità delle due parti. Del protocollo SSH ne esistono attualmente tre versioni le prime due distinte e incompatibili SSH1, SSH2 e dal primo settembre 2005 si è aggiunto OpenSSH che le supporta entrambe migliorando il protocollo e offrendo in più tutta una serie di tunneling sicuri con un assortimento di metodi di autenticazione.
S/MIME (Secure/Multipurpose Internet Mail Extensions) è un protocollo standardizzato da IETF prima nella RFC 1521 per i messaggi MIME (Mechanisms for Specifying and Describing the Format of Internet Message Bodies) che specifica come devono essere trasferiti i dati multimediali e gli allegati e-mail, poi con l’aggiunta di cifratura e firma elettronica (SECURE) per migliorare la sicurezza per applicazioni VPN generate dai componenti di un sistema di comunicazione.

Comunque, la sicurezza realizzata a livello Application è di ogni specifica applicazione che deve essere ben progettata e correttamente implementata. I metodi di protezione, i controlli di sicurezza richiedono di essere implementati in ogni nuova applicazione. I controlli a livello Application possono proteggere i dati di livello applicativo ma, non possono proteggere le informazioni di livello più basso.

VPN Transport Layer

Questo livello fornisce servizi di collegamento connection-oriented o connectionless per trasportare servizi di livello applicativo tra reti. Il livello trasporto può opzionalmente assicurare l’affidabilità delle comunicazioni. I protocolli TCP (Transmission Control Protocol) e UDP (User Datagram Protocol) sono usati comunemente come protocolli di livello trasporto. La sicurezza che proviene dal livello trasporto ha un vantaggio sulla sicurezza implementata sul livello Application, essendo questa su un livello più basso non si affida ai miglioramenti di ciascun applicativo. Le applicazioni esistenti ottengono i servizi di sicurezza dal livello trasporto.
Nel fornire servizi di sicurezza specifici ad un utente, si suppone che un solo utente stia usando il sistema. Come con la sicurezza a livello application, la sicurezza a livello trasporto può essere implementata solamente su un sistema finale.
L’uso più comune per i protocolli di livello trasporto è di rendere sicuro il traffico http nei moderni siti di e-commerce. Il protocollo TLS (Transport Layer Security) standard IETF RFC 2246 offre Riservatezza, Integrità e Autenticazione (Confidentiality, Integrity and Authentication) ad applicazioni basate sul TCP. Richiede l’implementazione di un server verso un client. È supportato da tutti i maggiori Web Browsers. TLS derivato direttamente dal protocollo SSLv3 sfrutta dei meccanismi application-to-application.
L’uso di TLS richiede che ciascun singolo applicativo debba supportare TLS; diversamente dai controlli di livello applicativo che tipicamente comportano una implementazione estesa della sicurezza negli applicativi, i controlli a livello trasporto come TLS sono molto meno intrusivi perché proteggono semplicemente le comunicazioni di rete a livello trasporto e non hanno bisogno di capire le funzioni o le caratteristiche dell’applicativo di livello superiore.

Attualmente molte applicazioni supportano i protocolli SSL e TLS per realizzare la sicurezza delle trasmissioni (VPN). Soluzioni di VPN queste che stanno avendo molto successo e diffusione in Internet. Le differenze tra questi due protocolli sono dovute soprattutto agli algoritmi crittografici utilizzati. Un limite di questi protocolli è la incapacità di proteggere comunicazioni differenti da quelle basate sul TCP, perché presume che il protocollo di livello rete stia assicurando l’affidabilità del trasporto (connection-oriented) con ritrasmissione del pacchetto in caso di perdita o ritardo.

VPN Data Link Layer

Questo livello è responsabile per la trasmissione dei pacchetti sui media fisici. La trasmissione è tra due apparecchiature che sono connesse fisicamente. Esempi di protocolli di livello data link sono Ethernet, Token Ring, Frame Relay e ATM.
Controlli di sicurezza su questo livello sono applicati a tutte le comunicazioni su uno specifico collegamento fisico. Poiché il livello Data link è sotto il livello rete, controlli di sicurezza a questo livello possono proteggere dati e informazioni di livello IP.
La sicurezza a questo livello veniva effettuata realizzando delle reti private. Questa protezione di livello due ha offerto una protezione indipendente dal protocollo usato su specifici collegamenti non sicuri. Questo significa che protegge il traffico anche di protocolli diverso dall’IP. Ma per garantire una maggiore riservatezza veniva applicata una protezione crittografica ai due terminali del collegamento. In pratica su un collegamento tra due host tutto il traffico ha bisogno di essere cifrato per il timore che venga intercettato. In questo caso è possibile usare delle apparecchiature hardware per la cifratura. Soluzione questa molto usata in ambiente militare.

Il vantaggio di questa soluzione è la velocità. Gli svantaggi tuttavia sono che questa soluzione non è scalabile, e lavora bene solamente su collegamenti dedicati, è costosa da schierare su grande scala perché bisogna proteggere separatamente ogni singolo collegamento. Inoltre le due entità coinvolte nella comunicazione devono essere connesse fisicamente. Può lasciare spazio ad attacchi man-in-the-middle su stazioni intermedie o routers, ed è di solito una soluzione proprietaria.
Questo tipo di protezione è utile ad esempio nelle macchine bancomat (ATM) dove tutte le macchine sono connesse attraverso collegamenti dedicati verso un ufficio centrale. Se i bancomat fossero connessi ad una rete IP invece dei più costosi collegamenti dedicati sicuri, la sicurezza a livello di collegamento dati non basterebbe, e si dovrebbe trasportare la sicurezza ad un livello superiore per offrire dei servizi di sicurezza affidabili

VPN Network Layer

Questo livello è responsabile per l’indirizzamento dei pacchetti attraverso le reti. L’indirizzamento è il processo che determina il percorso che un pacchetto deve fare per giungere a destinazione. Per indirizzare il pacchetto il livello rete ha bisogno di identificare inequivocabilmente ogni destinazione. Il livello rete quindi definisce un meccanismo di indirizzamento. Il protocollo IP (Internet Protocol) è il protocollo fondamentale di questo livello.
La sicurezza implementata sopra il livello tre, il livello IP appunto ha molti vantaggi. Primo vantaggio, l’ammontare del sovraccarico per la CPU nella negoziazione delle chiavi decresce notevolmente rispetto allo stesso lavoro fatto ai livelli superiori.
La sicurezza implementata a questo livello non richiede modifiche a nessun applicativo. Infatti i livelli superiori Trasporto ed Application non devono effettuare scambi con i livelli inferiori. E questo riduce la possibilità che possano esserci errori, vulnerabilità. I livelli superiori sfruttano l’infrastruttura di scambio delle chiavi già fornita dal livello rete. Questo riduce l’esplosione della implementazione di meccanismi di sicurezza al livello più alto. Minore è il numero dei meccanismi usati per garantire la sicurezza maggiore è l’affidabilità. Una sola protezione garantisce sicurezza a tutti gli applicativi.
Se la sicurezza è implementata ai livelli più alti, ogni applicativo deve progettare il proprio meccanismo di sicurezza. La probabilità di commettere un errore nella progettazione/programmazione dell’applicativo che possa aprire una falla nella sicurezza è molto più alto in questo modo.
Implementando su questo livello specifico la sicurezza delle trasmissioni, i suoi meccanismi di sicurezza e controllo sono completamente trasparenti perché proteggono automaticamente questo livello e tutti i livelli superiori senza interferire con questi. Il grado di protezione dipende solo dal metodo crittografico utilizzato. In pratica la protezione sul livello rete offre un tipo di protezione di tipo generale molto flessibile, che protegge tutti i tipi di traffico che passano su questo livello. Questa protezione è indipendente verso il basso dal tipo di media utilizzato, ed è indipendente verso l’alto dalla applicazione utilizzata. Questo significa che è trasparente nei confronti dei livelli superiori. Ovvero i livelli superiori non si accorgono di essere protetti.

Un altro vantaggio di implementare la sicurezza a livello rete è che le informazioni di questo livello (ad esempio, gli indirizzi IP) sono aggiunti in questo livello, e i meccanismi di sicurezza possono proteggere sia i dati all’interno dei pacchetti (payload) che e le informazioni di IP (header).
Un limite di implementare la sicurezza al livello rete è la difficoltà che ha questo livello nell’occuparsi di problemi che riguardano i livelli superiori come la non-repudiation dei dati. Questo viene gestito meglio nei livelli più alti che sono dotati di maggiore intelligenza.

IPsec (IP Security), offre la sicurezza al livello rete. IPsec è attualmente l’unico protocollo che può assicurare tutti i tipi di traffico Internet.

Descrizione dei Protocolli di Tunneling

Diverse tecnologie di livello rete sono disponibili per abilitare dei protocolli di tunneling attraverso le reti per creare una VPN.
Ci sono tre principali protocolli di tunnel:

  • L2TP (Layer 2 Tunneling Protocol).
  • GRE (Cisco Generic Routing Encapsulation).
  • IPsec (IP Security) tunnel mode.

Il Protocollo Layer 2 Tunneling Protocol (L2TP)

Prima dello standard L2TP (agosto 1999) RFC 2661, Cisco ha utilizzato il protocollo Layer 2 Forwarding (L2F) come suo protocollo di tunneling proprietario. All’epoca anche Microsoft aveva un suo protocollo di tunneling proprietario il Point-to-Point Tunneling Protocol (PPTP). Questi due protocolli erano molto simili, successivamente le due società Cisco e Microsoft si sono accordate per fondere i due protocolli in un unico protocollo. Creando così il protocollo Layer 2 Tunneling Protocol (L2TP).

Il protocollo L2TP è compatibile all’indietro con il protocollo L2F. Mentre il protocollo L2F non è direttamente compatibile con L2TP. Attualmente Microsoft che ha supportato il protocollo PPTP nelle sue più prime versioni di Windows utilizza PPTP/L2TP in Windows NT/2000/XP.

Il protocollo L2TP attualmente è uno standard IETF risultato dalla fusione dei due protocolli proprietari Cisco (L2F) e Microsoft (PPTP) ed è una soluzione di tunneling di livello 2. L2TP combina le migliori caratteristiche del protocollo Cisco Layer Two Forwarding (L2F) e del protocollo Microsoft Point-to-Point Tunneling Protocol (PPTP), abilitando così i lavoratori mobili a connettersi alla loro intranet o extranet dovunque e ogni volta che lo richiedono.
L2TP è un modo standard di costruire un Accesso VPN che simula reti private che usano un infrastruttura di rete condivisa come Internet. Questo Accesso VPN offre un accesso remoto per gli utenti mobili, telecommuters, e i piccoli uffici attraverso dial-up, ISDN, xDSL, e cavo.
L2TP è usato per creare un tunnelling indipendente dal tipo di media utilizzato, multiprotocol Virtual Private Dial Network (VPDN). L2TP permette agli utenti di invocare politiche di sicurezza societarie attraverso ogni collegamento VPN o VPDN come una estensione delle loro reti interne.
I Benefici di utilizzare il protocollo L2TP includono l’autenticazione per l’utente, l’allocazione dinamica di un indirizzo da un pool di indirizzi o usando un server DHCP, più RADIUS e il supporto di AAA.

Il protocollo L2TP viene utilizzato al meglio nelle VPN remote-access che richiedono un supporto multiprotocollo.
Un limite di L2TP è che è un protocollo di solo tunneling e non offre cifratura, quindi, il traffico, se intercettato può essere liberamente esaminato con un analizzatore di protocollo. L2TP non supporta l’integrità del pacchetto.

Il protocollo Cisco Generic Routing Encapsulation (GRE)

Il protocollo GRE è una tecnologia di tunneling sviluppato originariamente da Cisco che agisce a livello 3 della pila OSI che esiste da anni e che è stato standardizzato nelle RFC 1701, RFC 1702 e RFC 2784. Cisco ha supportato questa tecnologia di tunneling fin dall’IOS Cisco versione 9.21. Questo multiprotocollo trasporta protocolli IP incapsulati, CLNP, ed ogni altro pacchetto di protocollo nei tunnel IP.

Con il tunneling GRE, un router Cisco in ogni sede incapsula pacchetti di specifici protocolli in un header IP, creando un collegamento virtuale punto-a-punto verso i routers Cisco e ad ogni termine di una cloud IP, da dove lo header IP viene rimosso.
Connettendo differenti reti che funzionano con differenti protocolli (multiprotocollo) su un ambiente di dorsale a protocollo singolo, il tunneling IP permette l’espansione della rete attraverso un ambiente di dorsale a protocollo singolo. Il tunneling GRE permette a protocolli desktop di approfittare delle migliorate capacità di selezione del percorso di instradamento IP. Il protocollo GRE viene utilizzato al meglio nelle VPN site-to-site che richiedono un supporto multiprotocollo.
Il GRE è un protocollo di solo tunneling e non offre una cifratura al payload e quindi, il traffico, se intercettato può essere liberamente esaminato con un analizzatore di protocollo. Il GRE non supporta l’integrità del pacchetto.

Quando usare GRE e L2TP

In sostanza i due protocolli GRE e L2TP vengono usati quando è necessario fare il tunneling a pacchetti differenti dal tipo IP unicast. Per protocolli multipli o tunneling multicast di IP.
Per il traffico di rete che usa il networking Microsoft, il protocollo L2TP può essere la scelta migliore. A causa del suo PPP (Point-to-Point Protocol), L2TP può andare bene anche per una VPN ad accesso remoto che richiede un supporto multiprotocollo.
Il protocollo GRE è la scelta migliore per realizzare una VPN end-to-end che richiede il supporto di protocolli multipli. Il GRE è usato tipicamente per realizzare tunnel di pacchetti multicast come i protocolli di routing. Il protocollo GRE incapsula ogni traffico, tra la sorgente e la destinazione.
I protocolli di tunneling L2TP e GRE non supportano la cifratura dei dati o l’integrità del pacchetto dei dati.
In questi casi, il pacchetto tunnelizzato con questi protocolli (GRE, L2TP) non fornisce vera riservatezza ai dati, in quanto privi di protezione crittografica ma, per ottenere la cifratura e l’integrità del pacchetto è possibile trasportare i pacchetti cifrati da un altro protocollo, IPsec appunto. IPsec viene usato in combinazione con questi due protocolli di tunneling per cifrare i dati prima che vengano immessi nel tunnel e decifrati alla sua uscita. Avremo quindi dei tunnel L2TP/IPsec o GRE/IPsec.

Il protocollo IP security (IPsec)

IPsec è un protocollo o meglio un framework (una struttura) di protocolli ideato e progettato dall’IETF durante lo sviluppo dello standard IPv6 ed in seguito inserito nell’IPv4. Attualmente IPsec è lo Standard IETF per la cifratura e il tunneling di livello 3. L’architettura di IPsec viene descritta nella attuale terza versione delle RFC riguardanti IPsec la RFC 4301. IPsec ed è attualmente la scelta migliore per realizzare delle VPN sicure. IPsec non è un singolo protocollo ma è una struttura/framework di standard aperti che offrono i servizi di Riservatezza, Integrità, Autenticazione dei dati tra sender e receiver (pari partecipanti). In base alle necessità del traffico che deve essere trasmesso su una rete bisogna selezionare i migliori protocolli per realizzare una VPN.
IPsec offre questi servizi di sicurezza usando il protocollo Internet Key Exchange (IKE) per gestire la negoziazione di protocolli ed algoritmi basata su una politica di sicurezza locale per generare la cifratura e l’autenticazione adatta ad essere usata da IPsec.
Il diagramma di flusso seguente mostra un processo per selezionare un protocollo di tunnelling adatto a realizzare una VPN in base al tipo di traffico di dati.

Quando usare IPsec

Il protocollo IPsec è attualmente una delle scelte principali per realizzare una VPN. Un limite di IPsec è che supporta solamente del traffico unicast di IP cioè, del traffico verso un indirizzo di rete unico che rappresenta una unica destinazione di un unico indirizzo IP ovvero, del traffico da uno-a-uno. Questo è differente da un indirizzo IP multicast che è un indirizzo di rete unico che rappresenta un gruppo di destinazioni cioè, differenti host ovvero, del traffico da uno-a-molti. Il traffico multicast viene riferito come il traffico di un pacchetto trasmesso da un indirizzo IP che rappresenta un solo host verso un indirizzo IP che rappresenta più host che sono specificamente interessati a ricevere copie di quel pacchetto. Il pacchetto viene letto da tutto il gruppo di dispositivi che appartiene a quel gruppo multicast.
Il multicasting viene usato molto spesso per flussi audio e video. Per il mittente ci sono due vantaggi ad usare il multicast. Il primo è che il mittente ha bisogno di creare e spedire un solo pacchetto per tutto il gruppo, invece di creare e spedire un pacchetto diverso per ciascun ricevente. Secondo, il multicasting riduce l’uso della banda.
IPsec non offre attualmente protezione per il traffico multicast, perché IPsec è stato progettato specificamente per proteggere le comunicazioni tra due specifici punti ai termini di un tunnel IPsec end-to-end. Inoltre, le trasmissioni multicast sollevano parecchi problemi relativi alla sicurezza e alla scalabilità. Sulla sicurezza: di una stessa chiave segreta condivisa da molti utenti; sugli aggiornamenti e distribuzione dei segreti condivisi; sulle autenticazioni degli utenti; sulle diagnosi dei problemi. Quesiti questi, che possono annullare la protezione al traffico fornita da IPsec.
Al momento i ricercatori della IETF con il Multicast Security Working Group (MSEC) e della IRTF con il Group Security Research (GSEC) stanno studiando soluzioni fattibili per poter estendere IPsec così da poter supportare il traffico multicast, almeno per piccoli gruppi senza dover perdere i suoi metodi di autenticazione.

Identificare i termini delle VPN e di IPsec

I termini seguenti e le loro definizioni identificano i componenti chiave e gli elementi impiegati comunemente nelle VPN IPsec:

  • Tunnel – Il tunnel è un collegamento virtuale da punto-a-punto usato in una rete per trasportare traffico da un protocollo incapsulato dentro un altro protocollo. Per esempio, cyphertext trasportati in un pacchetto IP.
  • Encryption/Decryption – La Cifratura è il processo che trasforma le informazioni contenute in un testo in chiaro, mediante uno scrambling digitale in una forma non comprensibile chiamata cyphertext così che non sarà leggibile o usabile da utenti non autorizzati. La Decifratura trasforma di nuovo il cyphertext in chiaro, in modo da renderlo accessibile per essere letto o usato dagli utenti autorizzati.
  • Cryptosystem – È un sistema per portare a termine l’encryption/decryption, l’autenticazione dell’utente, l’hashing, e i processi di scambio delle chiavi. Un cryptosystem può usare uno o più metodi differenti, dipendendo questo sia dalla politica di sicurezza che deve essere implementata sia dalle situazioni in cui può trovarsi il traffico dell’utente.
  • Hashing – È una tecnologia di sicurezza che garantisce l’integrità dei dati che utilizza una formula, un algoritmo, una funzione matematica per convertire un imput di lunghezza variabile e una chiave segreta condivisa in una sola sequenza di cifre di lunghezza fissa. Il message/key e l’hash viaggiano nella rete da sorgente a destinazione. Alla destinazione l’hash viene ricalcolato e viene usato per verificare che il messaggio e la chiave non siano state modificate mentre viaggiava sulla rete.
  • Authentication – L’autenticazione è il processo di verifica di identità di un utente o un di processo che tenta di accedere a un sistema di computer o ad un collegamento di rete. L’autenticazione assicura che l’individuo o il processo è chi dice di essere. L’autenticazione non conferisce diritti di accesso associati.
  • Authorization – L’Autorizzazione è il processo di dare ad individui autenticati o a processi di accedere a sistemi di computer o risorse di collegamento di rete.
  • Accounting – Funzione che permette di tracciare il consumo delle risorse da parte degli utenti e dei processi, permettendo di attribuire la responsabilità degli eventi agli individui e ai processi che li hanno causati.
  • Key management – La gestione della chiave – Una chiave è una informazione, di solito una sequenza casuale o una apparentemente casuale sequenza di cifre binarie, usate inizialmente per settare/mettere su e periodicamente cambiare le operazioni compiute in un cryptosystem. La gestione della chiave è la supervisione e il controllo del processo da dove le chiavi sono generate, immagazzinate, protette, trasferite, caricate, usate, e distrutte.
  • Key Strength – Una misura della difficoltà di decifrare un Ciphertext quando l’algoritmo di Cifratura è conosciuto e solo la chiave è sconosciuta. La forza di una chiave è usualmente in funzione della lunghezza della chiave. Più è lunga più è forte.
  • Random Number Generator (RNG) – È un particolare algoritmo che genera dei numeri casuali.
  • PseudoRandom Number Generator (PRNG) – È un particolare algoritmo che genera dei numeri Pseudo-casuali.
  • Cryptographically Secure PseudoRandom Number Generator (CSPRNG) – È un generatore di numeri pseudo-casuali crittograficamente sicuro. Questo generatore è un particolare algoritmo, fondamentale nel campo della crittografia, per poter generare dei valori che siano veramente casuali cioè, che abbia un range di imprevedibilità molto ampio all’interno di un sistema informatico che per definizione è prettamente deterministico e prevedibile. Di CSPRNG ve ne sono di diversi tipi tra i più famosi citiamo Fortuna, metodo monte carlo, blum blum shub, mersenne twister.
  • Hardware Random Number Generator (HPRNG) – Un generatore hardware di numeri pseudo-casuali è un apparato che genera numeri pseudo-casuali da un processo fisico. Tali dispositivi basano il loro output su fenomeni tipicamente microscopici come il rumore dovuto all’agitazione termica o da altri fenomeni quantistici. I processi che generano questi numeri sono completamente impredicibili.
  • Certificate of Authority (CA) service – Una Certificate Autority è una parte terza agli utenti che offre un servizio che serve a creare e garantire “fiducia” fra le entità di rete o gli utenti creando ed assegnando certificati digitali, come certificati a chiave pubblica, per scopi di cifratura. Una CA attesta, garantisce sulla autenticità dei dati del certificato. La CA a richiesta può creare le chiavi di cifratura per gli utenti.
  • Analisi del Traffico – L’analisi del flusso di traffico di una rete o di un collegamento viene fatta allo scopo di ricavare informazioni che possono essere utili per un attaccante. Esempi di informazioni che sono ricavabili da un monitoraggio su una rete sono la frequenza di trasmissione, le identità dei pari comunicanti, la grandezza dei pacchetti e l’identificazione del flusso.

I termini seguenti definiscono protocolli chiave e gli elementi che compongono IPsec:

  • Authentication Header (AH) – È un protocollo di sicurezza che offre l’autenticazione dei dati, l’integrità dei dati, e opzionalmente un servizio anti-ripetizione. AH viene inserito all’interno dei dati per essere protetto.
  • Encapsulating Security Payload. (ESP) – È un protocollo di sicurezza che fornisce i servizi di riservatezza dei dati, integrità dei dati, l’autenticazione dell’origine dei dati, offre anche opzionalmente il servizio anti-ripetizione. ESP viene incapsulato nei dati per essere protetto.
  • Internet Key Exchange (IKE) – È un protocollo ibrido che implementa parte dei protocolli Oakley (Oakley key exchange) e la suite di protocolli Skeme (Skeme key exchange) nella struttura di ISAKMP (Internet Security Association Key Management Protocol). L’Oakley e SKEME ognuno dei quali definisce un metodo per stabilire uno scambio di chiave autenticato. Questo include la costruzione del payload, i payload delle informazioni trasportate, l’ordine nel quale sono trattate le chiavi e come le chiavi sono usate.
  • Internet Security Association and Key Management Protocol (ISAKMP) – È una struttura di protocollo per la negoziazione dei parametri di sicurezza che definisce il formato del payload, le meccaniche di implementare un protocollo di scambio di chiave, il tipo di crittografia, e la negoziazione di una SA (Security Association).
  • Diffie-Hellman Group – È un valore che specifica il tipo di generatore di cifratura (modulus per [MODP] e curva ellittica per [EC2N]) e la lunghezza della chiave da essere usata per generare un segreto condiviso. Attualmente sono definiti 10 gruppi. La RFC 2409 definisce i gruppi da 1 a 4. La RFC 3526, definisce il gruppo 5 e i gruppi da 14 a 18.
  • Security Association (SA) – È un insieme di parametri che viene usato per mettere su una connessione logica di tipo simplex (uni-direzionale) per proteggere le informazioni. Tutto il traffico dei dati che viene fatto passare attraverso una SA tra due pari che si accordano per condividere le stesse politiche di sicurezza e le chiavi per proteggere le loro comunicazioni.
  • Security Association Database (SADB) – è un database dove vengono raccolte tutte le Security Association attive.
  • Security Policy (SP) – È un elenco di politiche di sicurezza che devono essere applicate.
  • Security Policy Database (SPDB) – è un database dove vengono raccolte tutte le Security Policy attive.
  • Peer Authorization Database (PADB) – è un database che fornisce i collegamenti tra il database SPDB e un protocollo di gestione delle Security Association come IKE.
  • Authentication, Authorization, Accounting (AAA) – I servizi di sicurezza di rete che offrono la struttura primaria che realizzano le tre funzioni di Autenticazione (authentication), il controllo degli accessi (authorization) e l’(accounting) è settato su routers o su server di accesso. L’espressione “protocollo AAA” non si riferisce ad un particolare protocollo ma a una famiglia di protocolli che offrono, anche in modi diversi, i servizi citati. I servizi offerti da AAA sono specificati nelle RFC 2903, 2904, 2905, 2906, 3539. Le due maggiori alternative per l’AAA sono TACACS+ e Radius.
  • Terminal Access Controller Access Control System Plus (TACACS+) – Una applicazione di sicurezza che offre la conferma centralizzata agli utenti che tentano di guadagnare l’accesso ad un router o al server di accesso alla rete. TACACS+ è un protocollo che fornisce il controllo di accesso per routers, NAS (network access servers) e altre apparecchiature di rete attraverso un server centralizzato. TACACS+ fornisce dei servizi separati di Authentication, Authorization e Accounting. TACACS+ è un protocollo proprietario CISCO.
  • Remote Authentication Dial-In User Service (RADIUS) – Un sistema client/server distribuito che garantisce le reti contro gli accessi non autorizzati. RADIUS è un protocollo che viene usato da applicazioni per ottenere l’autenticazione e l’accesso a reti sia in da locale che da roaming. Viene specificato nelle RFC 2865, 2866.
  • Nonces – Un nonce è l’acronimo di “number used once” cioè, un numero usato una sola volta. Un nonce è di solito un valore casuale o pseudo-casuale che viene usato come imput in molti tipi di calcoli crittografici, incluso il supporto per l’integrità della negoziazione. Per esempio, host A invia un nonce all’host B. l’host B compie i calcoli e invia i risultati all’host A; l’host A poi usa l’originale valore nonce per con-validare il risultato dell’host B. Nonces sono valori che vengono anche usati per garantire dagli attacchi di ripetizione e assicura che ogni scambio di pacchetti sia nuovo, piuttosto che una ripetizione di uno scambio di pacchetto precedente e/o artefatto. Un nonce è un valore che viene usato negli algoritmi a crittografia simmetrica in modalità CBC, modalità questa che richiede appunto un valore casuale per sincronizzare i vari blocchi di cifratura chiamato IV (Initial Value). Un nonce crittograficamente sicuro viene generato da un CSPRNG o da un generatore Hardware sicuro di numeri pseudo-casuali.
  • IP Payload Compression Protocol (IPComp) – il protocollo IPComp (RFC 3173) compie una compressione del pacchetto senza perdite per il payload.

Continua a leggere VPN ovvero Reti Private Virtuali: Tecnologia IPsec v3 – 3a parte

Articoli correlati

Il caso “Medusa Ransomware”

I ransomware stanno diventando sempre più una minaccia di rilevanza importante, quasi da non far dormire sonni tranquilli ad aziende sia pubbliche che private,...

Digital Transformation


 

Noleggia una Tesla per il tuo evento ICT!

Categorie