Oggi connettersi alla rete Internet è una pratica di uso comune, che spesso si verifica anche all’insaputa dell’utente (e.g. le applicazioni mobile che inviano dati in background, gli aggiornamenti software automatici, etc.) e che riguarda non solo le persone che navigano il web attraverso il proprio dispositivo fisso o mobile, ma anche moltissimi apparecchi. Secondo un’analisi del gruppo Gartner, nel 2020 il numero di dispositivi connessi in tutto il mondo arriverà a circa 20 miliardi.
Se da un lato queste statistiche evidenziano il successo raggiunto dalla rete Internet, dall’altro è importante tenere conto dei problemi derivanti da una distribuzione così estesa e un utilizzo così elevato. Infatti, la differenza fra l’obiettivo per cui Internet era stata inizialmente progettata e l’attuale uso introduce inevitabilmente una serie di limitazioni. In particolare, due risultano molto significative: il recupero di contenuti mediante localizzazione e i sistemi di autenticazione/sicurezza solo a livello di host.
La prima limitazione deriva dal fatto che in una rete TCP/IP ogni richiesta inviata da un client sia indirizzata a uno specifico indirizzo IP, che identifica l’host in grado di restituire il contenuto. Ciò comporta che il concetto di identificazione sia associato a un host piuttosto che a un contenuto, e che ogni host debba essere identificato da un indirizzo IP univoco. Già in termini di indirizzi IP, la necessità di introdurre un nuovo protocollo (i.e. IPv6), in sostituzione a quello precedente, ha sottolineato l’inadeguatezza delle scelte progettuali dell’architettura TCP/IP. Se inizialmente il numero di indirizzi univoci forniti dal protocollo IPv4 a 32-bit sembrava sufficiente a coprire la quantità di dispositivi connessi, è stato poi necessario adottare il protocollo IPv6 a 128-bit per avere un più ampio range di indirizzi assegnabili.
La seconda importante limitazione dell’architettura TCP/IP riguarda il sistema di sicurezza/autenticazione. Quest’ultimo, infatti, può essere solo applicato a livello di host o, al più, a livello di canale di comunicazione, ma non a livello di contenuto scambiato.
Inoltre, è necessario anche considerare la numerosità di dispositivi che oggi si possono connettere alla rete Internet. Oltre ai dispositivi fissi e mobili, si aggiungono anche quelli appartenenti alla categoria di “Internet of Things”: oggetti di uso comune, come i frigoriferi o le sveglie, che sono in grado di adattare il proprio comportamento sulla base delle informazioni ricevute da altri oggetti attraverso la rete. Servizi quali video streaming o VoIP (i.e. conversazioni telefoniche effettuate attraverso connessione Internet) sono quotidianamente utilizzati e fanno largo uso della banda. Infine, l’utilizzo di dispositivi mobili introduce una serie di complicazioni che una rete originariamente pensata solo per apparecchi fissi non è in grado di colmare.
L’insieme di tutte queste considerazioni ha portato alla constatazione che non fosse più possibile adottare soluzioni mirate a superare specifici limiti architetturali della rete TCP/IP, ma che fosse, invece, necessario definire una nuova architettura. Questa è stata la spinta che nel 2010 ha portato la National Science Foundation alla creazione del programma “Future Internet Architecture”, per promuovere il design e la prototipizzazione di nuove architetture per la rete Internet. Al termine del primo programma, quattro differenti progetti di ricerca furono proposti, tre dei quali furono inoltre riconfermati per il secondo programma: Named-Data-Networking (NDN) [1], MobilityFirst [2] ed eXpressive Internet Architecture [3]. Fra questi, quello più emergente risulta essere NDN.
Il progetto NDN prese inizialmente spunto dal progetto CCNx, un prototipo di architettura di rete basato sull’identificazione dei contenuti, anzichè dei singoli nodi, ideato da Van Jacobson. L’elemento principale che contraddistingue l’architettura NDN è il processo con cui i contenuti vengono richiesti. Questi ultimi sono identificati da un nome, ovvero una stringa composta da diversi elementi separati dal carattere “/”. Per esempio, una notizia pubblicata dalla BBC il 10/10/2015 viene identificata con la seguente stringa: /bbc/news/2015oct10. Ogni consumer di una rete NDN, che equivale a un client di una rete TCP/IP, può richiedere un contenuto inviando un interest. Come in qualsiasi rete, un numero indeterminato di nodi (router) separa il consumer dal nodo in grado di soddisfare la richiesta (producer). Quando un router riceve un interest, sulla base degli indirizzi contenuti nella sua tabella di reindirizzamento, trasmette il messaggio al nodo successivo, salvando al tempo stesso il nodo da cui lo ha ricevuto. Quando, infine, l’interest raggiunge il producer, quest’ultimo pubblica il contenuto, che viene reinoltrato fino ad arrivare al consumer. Una proprietà fondamentale dell’architettura ICN è la capacità dei singoli router di poter salvare i contenuti in cache. Infatti, per ogni interest ricevuto, un router verifica se il contenuto richiesto sia presente in cache e, in caso positivo, soddisfa immediatamente la richiesta. Poiché la proprietà di caching distribuito consente potenzialmente ad ogni nodo di soddisfare le richieste ricevute, è possibile contrassegnare un contenuto con una signature generata dal producer. In questo modo, un consumer può sempre verificare l’autenticità di un contenuto, indipendentemente dal nodo che ne ha soddisfatto la richiesta.
Nonostante i numerosi vantaggi, anche l’architettura NDN è vulnerabile di fronte ad attacchi di privacy e security. Per questo motivo, diversi gruppi di ricerca a livello internazionale hanno iniziato a studiare delle strategie per rendere NDN sempre più affidabile. Fra questi vi è anche il gruppo SPRITZ Security and Privacy Research Group che gestisce uno dei 39 nodi che fungono da testbed per l’architettura NDN.
Per descrivere alcuni possibili attacchi in una rete NDN, si può considerare la topologia più semplice, illustrata in Figura 1: un consumer e un producer, separati da un singolo router.
Nel caso del consumer, un attacco molto comune prevede l’identificazione dei contenuti richiesti dal nodo stesso [4, 5]. Questi possono essere scoperti sfruttando i diversi tempi di risposta con cui un contenuto viene fornito al nodo richiedente: se un contenuto è già presente nella cache di un router, la richiesta viene immediatamente soddisfatta; se, invece, la richiesta deve raggiungere il producer, il tempo per soddisdfarla sarà maggiore. Sfruttando questo principio, un nodo maligno connesso allo stesso router di un altro consumer può identificare quali contenuti siano salvati nella cache del router, e quindi assumere che siano stati precedentemente richiesti dal consumer sotto attacco. Con lo stesso principio, è inoltre possibile dedurre quali contenuti siano stati richesti a un producer [4, 5].
Nel caso del router, due esempi comuni di attacco sono il cache pollution [6] e l’interest flooding [7]. L’obiettivo del primo è riempire la cache di un router di contenuti non popolari, impedendo al router di soddisfare le richieste dei consumer. Questi ultimi dovranno quindi attendere il massimo tempo richiesto affinchè l’interest inviato raggiunga il producer. Un attacco di interest flooding, invece, è paragonabile al classico Distributed Denial-Of-Service: l’obiettivo dei nodi maligni è generare un elevato numero di interest per deteriorare sia le prestazioni generali della rete che quelle dei singoli router. Così come i pacchetti di una rete TCP/IP, gli interest consumano la capacità di una rete NDN e, se presenti in grandi quantità, portano a una congestione del traffico. Inoltre, poiché per ogni interest vengono memorizzate alcune informazioni (e.g. il nodo da cui viene ricevuto), quando il loro numero aumenta, le capacità dei router diminuiscono e, inevitabilmente, le richieste legittime smettono di essere gestite.
Per ciascuno degli attacchi sopra illustrati è stata già proposta una contromisura, ma vi è ancora spazio per individuare nuove vulnerabilità. In vista della possibile sostituzione dell’architettura IP con quella NDN, l’obiettivo dello SPRITZ team, così come degli altri gruppi di ricerca che lavorano sul tema, è individuare il maggior numero di attacchi per poter rendere l’architettura NDN più stabile possibile.