DARPA: i 32 bit che hanno rivoluzionato il mondo – Parte IV – Protocollo Internet, header e campo Options

0
727
RFC del protocollo IP: sua struttura

Premessa

Carissimi e carissime lettori e lettrici del blog, ben trovati!
Com’è consueto nei miei ultimi articoli, colgo l’occasione di questo rientro per scusarmi con voi della totale assenza dal Blog Generico in questi ultimi mesi. Vorrei perciò ringraziare il nostro UncleBob per aver mandato avanti la “baracca” in tutto questo tempo. Nonostante tutto, i nostri aggiornamenti sono stati costanti e le decisioni su cosa pubblicare sono sempre condivise da tutto il team che cura questo spazio.

Come spero abbiate capito, ormai, la “Macchina Generica” non si ferma per nessuna ragione. E nemmeno se il responsabile del Blog (il sottoscritto) latita per qualche tempo. The show must go on: non potevamo lasciare uno spazio dedicato alla divulgazione senza contenuti da proporre e condividere con il nostro pubblico. Un pubblico che, consentitemi di dire, sta crescendo sempre di più. Ciò è testimonianza sincera di impegno e lavoro costanti che ripagano le ore spese a scrivere e revisionare tutti i contenuti pubblicati.
Il mio grazie più sincero e profondo va a tutto il Team di revisori ed editori del Blog che hanno permesso di non fermarsi mai. Per ultima cosa, ma non per importanza, un altro grazie di cuore a tutti i 9GU che continuano a partecipare attivamente alle attività di Clan. Sono loro a rendere questo Clan una singolare e straordinaria esperienza di vita e condivisione. A voi, ancora, grazie.

Introduzione

Stiamo per addentrarci nei meandri del protocollo IP, del suo header e, nello specifico, del campo “Options” (accennato precedenti articoli) presente all’interno dell’header stesso. Prima, però, vorrei farvi un brevissimo riassunto dell’ultimo articolo, facendo anche una ripresa dai precedenti, tanto per riprendere familiarità con alcuni concetti. Questi concetti, lo vedrete, fanno tutti capo al campo “Options” di cui parleremo dopo):

  • Nella terza parte abbiamo parlato di tre tipologie di reti militari:
    • NIPRNET, SIPRNET e JWICS. Ognuna possiede delle specifiche particolarità i cui scopi definiscono il tipo di classificazione delle informazioni a livello di segretezza (classificate, servizi web/mail e top-secret). Questo determina anche il tipo di trattamento nella spedizione sulla rete.
  • Nella seconda parte, invece, abbiamo dato un accenno di come sono state strutturate e suddivise nel tempo le reti militari statunitensi. Tutte derivano dalla struttura principale che le originò, ovvero ARPANET.
  • Nella prima parte abbiamo introdotto gli albori di ARPANET e le vicissitudini che portarono alla sua creazione. Abbiamo poi dato una prima definizione di Internet e del relativo Protocollo Internet. Infine, abbiamo anche fornito un esempio di 3-way handshake proprio del protocollo TCP. Questo serve a stabilire una connessione con un nodo della Rete Internet per far cominciare lo scambio di informazioni.

Il Protocollo Internet o IP

Ora che abbiamo rimesso insieme alcuni concetti fondamentali, possiamo passare a dare una definizione più o meno precisa di cosa sia il Protocollo Internet. Nella prima parte di questa serie di articoli, vi ho condiviso il noto RFC 791. Si tratta di una risorsa redatta dall’IETF che si occupa di definire la documentazione tecnica sull’architettura di Internet. Di conseguenza, questo dà una definizione tecnica di tutti i protocolli che la compongono.

Stando a quanto si legge nell’RFC 791:

“The internet protocol is specifically limited in scope to provide the functions necessary to deliver a package of bits (an internet datagram) from a source to a destination over an interconnected system of networks. There are no mechanisms to augment end-to-end data reliability, flow control, sequencing, or other services commonly found in host-to-host protocols. The internet protocol can capitalize on the services of its supporting networks to provide various types and qualities of service.

Il Protocollo Internet si limita a fornire le funzioni necessarie per consegnare un pacchetto di bit. Li muove da una destinazione all’altra senza fornire alcun tipo di garanzia che tali pacchetti possano giungere a destinazione (scopo ottemperato, invece, dal protocollo TCP).
L’unico tipo di informazioni reperibili all’interno dell’header (la parte che trasporta le “informazioni” principali di ciascun pacchetto IP) riguarda il tipo di reti supportate (IPv4, IPv6). Troviamo poi altre informazioni. Fra queste, le più importanti sono: sorgente e destinazione del pacchetto, lunghezza totale dell’header, informazioni di controllo ed il campo “Options“.

Header del protocollo IP – Immagine tratta liberamente da: https://tools.ietf.org/html/rfc791

32 bit fondamentali…

In questi trentadue bit è racchiuso il motore che spinge il mondo delle telecomunicazioni. Questo motore, assieme al protocollo TCP, garantisce che tutto ciò che noi inviamo sulla Rete sia tracciato, sequenziato e confermato dalla destinazione. Tutto ciò indipendentemente dalla strada che ogni singolo pacchetto intraprenderà per giungere alla propria meta.

Una considerazione facoltativa (e quindi non indispensabile alla comprensione) ma molto importante che mi sento di fare è darvi la definizione di incapsulamento. Senza tecnicismi, dovete immaginare che il Protocollo Internet ed il Protocollo TCP siano una pila di strati sovrapposti. Questa è chiamata in gergo tecnico TCP/IP stack, e definita a livello logico dallo standard ISO/OSI). Partiamo dallo strato fisico, quello dei segnali elettrici inviati attraverso lo spettro elettromagnetico, cablato o via etere, fino ad arrivare all’ultimo strato, quello applicativo. Quest’ultimo è relativo ai servizi, come ad esempio il web.

…in continua comunicazione

Ciascuno di questi strati opera in modo indipendente dal suo strato immediatamente sottostante o superiore, ma comunica direttamente con entrambi scambiandosi informazioni. Lo scambio di queste informazioni avviene in entrambi i sensi. A partire dallo strato fisico, si sale verso il livello più alto, quello applicativo (quando un pacchetto proviene da una sorgente). Si scende poi di nuovo verso lo strato fisico (quando il pacchetto arriva a destinazione per essere processato e re-inviato).
Così, ogni volta che l’informazione transita da uno strato all’altro, si vede “incapsulata” e “de-incapsulata” in un formato “comprensibile” dallo strato verso cui deve giungere. In sintesi: c’è una traduzione dei segnali elettrici nel formato leggibile dal mezzo che deve inviare l’informazione. Se questo è cablato, per semplicità, si considera il “frame” Ethernet, ovvero il tipo di incapsulamento “leggibile” da quello strato.
Quando, invece, parliamo di ricezione delle informazioni, il processo è inverso. Per una informazione che deve arrivare in uno strato inferiore ci sarà una traduzione in un formato leggibile da tale strato.

Il campo “Options”

A questo punto, però, vi starete chiedendo cosa c’entri tutto questo con le reti militari. Ebbene, è qui che entra in gioco il campo “Options” del Protocollo Internet: questo campo è appositamente definito in un RFC, ovvero l’RFC 1108. Questo documento esplicita tutti i valori consentiti per questo campo e la struttura che ne impone la codifica. Esso adopera tre ottetti di bit per comunicare che quel pacchetto proviene da una rete del DoD statunitense. Più in generale, può indicare la provenienza da qualunque rete militare.

Gli ottetti esprimono, in bit, i valori che codificano il tipo di informazione contenuto nel pacchetto IP, ovvero:

Classificazione dei livelli di codifica espressi dal campo “Options” del Protocollo Internet – Immagine liberamente tratta da: https://tools.ietf.org/html/rfc1108

Con questo piccolo specchietto, quindi, inizia a comporsi il piccolo puzzle di cui abbiamo discusso nei capitoli precedenti. Possiamo così vedere delinearsi il modo di prioritizzare e spedire le informazioni sulla rete, in base al tipo di contenuto che trasportano. Questo significa anche privilegiarle a livello di transito e percorsi su determinati tipi di reti dedicate.

Un sistema complesso, ma collaudato

Ci si potrebbe ora chiedere: come è possibile che queste informazioni possano viaggiare sulla Rete Internet senza essere intercettate e senza sbagliare “strada“?
La risposta è semplice. I router di confine delle reti militari (e quelli che compongono internamente una rete militare) marchiano i pacchetti IP attivando il flag OPT (Options). Definiscono anche che tipo di informazione contengono, spedendo quel pacchetto attraverso una linea privilegiata di altri router della rete militare. Ne risulta un sistema per cui, nel momento nel quale quel pacchetto transiterà presso il router ricevente, riceverà una classificazione di “prioritario”. Sarà perciò spedito verso la sua destinazione, militare anch’essa.
A questo punto, non è sicuramente immotivata un’altra domanda:

Un pacchetto proveniente da una rete militare si può intercettare?

No, non si può, perché, come detto in precedenza, questi pacchetti transitano su linee privilegiate. Gli ISP pubblici, in alcuni casi utilizzati anche per incanalare queste informazioni, quando rilevano il campo OPT abilitato, smistano immediatamente il pacchetto su reti privilegiate. Queste sono ignote in ambito civile e, comunque, protette dalla sicurezza fornita dal pacchetto IP. Non dimentichiamo, infatti, che le informazioni classificate conoscono comunque una cifratura a monte; inoltre, esse transitano su reti cifrate e dedicate, proprio perché si tratta di informazioni provenienti da una rete militare.

Ci sarebbe un unico modo per poter intercettare traffico militare in transito su una rete civile. Bisognerebbe cioè individuare e successivamente controllare un nodo su cui si è certi transitino informazioni provenienti da reti militari. Questo, per ovvie ragioni, non è semplice come intercettare comune traffico wireless o effettuare ancor più comuni attacchi MITM.

Per i più curiosi

Se vi state chiedendo come appaia un pacchetto IP che viaggia su una rete pubblica, potete utilizzare un noto analizzatore di pacchetti, Wireshark. L’effettivo utilizzo e scopo di Wireshark, ovviamente, sono argomenti che esulano dall’intento di questa serie di articoli.
Non amando lasciare a mani vuote anche i più curiosi, ecco uno screen tratto dalla cattura del traffico da e verso la mia rete privata. Vedrete come appare l’header IP di una normale connessione e io commenterò brevemente l’immagine:

Vista del contenuto di un pacchetto IP, estratto dall’analisi in tempo reale tramite Wireshark

Come si interpreta l’immagine?

Confrontate l’immagine qui sopra con l’RFC del protocollo IP. Vi renderete conto che corrisponde perfettamente a quello che abbiamo descritto in sintesi prima. Ecco alcune delle informazioni che ritroviamo.

La versione del protocollo IP (IPv4, o IPv6) subito accanto gli indirizzi di sorgente e destinazione; i “Differentiated Services” che sono stati aggiunti all’RFC originale del procotollo IP dall’RFC 2474. Questi trovano utilizzo nel migliorare la qualità del servizio (QoS) e fornire più priorità a determinati tipi di traffico. Possono poi eventualmente segnalare congestioni su una porzione di rete;

I flag: DF, MF che specificano se e a quale porzione del datagramma, appartiene il frammento selezionato. Di norma, non vi è presenza di frammenti;

Il campo TTL (cioè Time To Live), che indica la durata di vita che quel pacchetto avrà. Questa si esprime in secondi; ogni volta che il pacchetto attraversa un hop (un altro router sul percorso del pacchetto, per dirla terra terra) quel valore diminuisce di un secondo. Quando il valore arriva a zero, ciò determina la distruzione di quel pacchetto.

Conclusione

Con questo articolo, si conclude la serie sugli articoli relativi al progetto DARPA ed ai trentadue bit che hanno cambiato il mondo!
Spero che con questa serie di articoli, abbiate appreso qualcosa in più e che la lettura vi sia risultata piacevole!

Ora non mi resta che salutarvi, dandovi appuntamento al prossimo articolo!

Stay hungry, stay generic!