La Protezione delle Informazioni

Modello Stratificato OSI

Alla fine degli anni 70, con il diffondersi delle reti di computer, si rese necessario studia¬re uno standard per permettere l'interoperabilità e la comunicazione tra i dispositivi. L'ISO sviluppò quindi un progetto, denominato OSI (Open Systems Interconnection), per creare un modello di riferimento per le reti di computer con l’obiettivo di fornire una base teorica comune ai progettisti e permettere di confrontare tra loro differenti architetture di rete dei numerosi produttori.
Data la complessità del problema, le funzioni di comunicazione sono state suddivise in un insieme gerarchico di sette livelli, ad ogni livello è assegnata una serie di servizi specifici da realizzare per una corretta comunicazione tra sistemi.




Ogni sistema di comunicazione, ovvero ogni elaboratore dotato di opportuno software, periferiche, schede di interfaccia, processi, ecc., e suddiviso secondo il modello OSI, in sette livelli ordinati e sovrapposti verticalmente e può comunicare con altri sistemi tramite un mezzo fisico di connessione.
In ogni strato sono presenti degli elementi attivi (hardware e/o software), detti entità, che realizzano i servizi per il livello superiore. In ogni livello sono quindi definite le operazioni primitive, ovvero i servizi offerti per il livello superiore.
l’insieme delle regole che permettono la comunicazione tra entità che appartengono allo stesso, viene detto protocollo.

Livello Fisico
Il livello fisico si occupa esclusivamente di trasmettere le sequenze di bit lungo il canale di comunicazione che unisce due o più sistemi. Le questioni più importanti che affronta sono, le modalità di trasmissione (Simple, half-duplex, full-duplex ) e le caratteristiche dei cavi (tipo di cavo, lunghezza massima consentita).
La "trasmissione dati" e l'insieme delle tecniche hardware e software utilizzate per la trasmissione a distanza di informazioni digitali. Il livello fisico del modello ISO/OSI definisce le caratteristiche elettriche e meccaniche dei dispositivi e delle interfacce necessari nella trasmissione dati tra computer connessi in rete. Per poter collegare utenti ubicati in qualsiasi luogo e stato logico ed è economicamente conveniente utilizzare la rete telefonica, perché essa è capillarmente diffusa in tutto il mondo e adotta standard conformi alle normative internazionali.

Livello Data Link
Il livello di Data Link si occupa principal¬mente di rendere la linea di comunicazione affidabile interessandosi alla struttura dei sati da trasmettere o da ricevere. Uno dei compiti fondamentali di questo livello è quello di suddividere i messaggi in frame. L'insieme di queste operazioni viene detto framing. Inoltre questo livello esegue il controllo del flusso, cioè il trasmettitore non intasa il ricevitore con molti dati. Un altro compito di questo livello è quello di eseguire una temporizzazione dell'invio dei dati, e questa operazione viene chiamata sincronizzazione. Esegue poi un controllo degli errori. Inoltre Tramite opportuni metodi di accesso la mezzo, adottati da questo livello, è possibile limitare la probabilità che i frame subiscano collisioni.

Livello di Rete
La funzione fondamentale di questo livello è di gestire l'instradamento dei pacchetti dalla stazione mittente a quella destinataria, scegliendo in modo opportuno il percorso attraverso la rete. Per la scelta del percorso ottimale vengono utilizzati degli algoritmi e vengono consultate delle tabelle. Quando su alcuni tratti della rete, tra un nodo e un altro, sono presenti troppi pacchetti, possono verificarsi problemi di congestione del traffico. Compito di questo livello è quello di ridurre tale problema.

Livello di Trasporto
Il livello di Trasporto, si occupa di fornire un trasferimento dati affidabile e di ottimizzare l'uso delle risorse di rete. Compiti di questo livello sono la correzione degli errori e la prevenzione della congestione della rete. Inoltre, poiché le unità di dati possono viaggiare su percorsi differenti, non è detto che arrivano a destinazione nello stesso ordine in cui sono state spedite, un altro compito di questo livello è riordinare le PDU (Protocol Date Unit) in arrivo seconda la sequenza originale.

Livello di Sessione
Il livello di Sessione, è responsabile dell'organizzazione del dialogo tra due programmi applicativi e del conseguente scambio di dati; esso consente di aggiungere servizi più avanzati, quali la gestione del dialogo (mono o bidirezionale), la gestione del token per effettuare mutua esclusione nell'utilizzo di una risorsa condivisa o la sincronizzazione inserendo dei checkpoint in modo da permettere di riprendere un colloquio precedentemente interrotto e ridurre la quantità di dati da ritrasmettere in caso di gravi malfunzionamenti.

Livello di Presentazione
Poiché i singoli nodi che compongono una rete utilizzano molto spesso rappresentazioni diverse dei dati, occorre gestire il formato della codifica dell’informazione oltre che l’eventuale conversione tra un codice e l’altro. Ogni computer può avere il proprio modo di rappresentare i dati al proprio interno, occorrono dunque delle opportune conversioni per fare in modo che l’informazione trasportata possa essere compresa dai computer destinatari. Le entità di questo livello si occupano anche della compressione dei dati, cioè la modalità di ridurre i bit necessari a immagazzinare e trasmettere l’informazione cercando di lasciare inalterata l’informazione ad essi associata.
Algoritmi di compressione
È possibile suddividere le tecniche di compressione in due categorie: lossy, che utilizzano processi con perdita cli informazioni, e lossiess, che utilizzano processi senza perdita di informazioni. In quest'ultimo caso, l’informazione decompressa è esattamente identica a quella prima della compressione, mentre nel primo caso ciò non è più vero.
Esistono delle applicazioni in cui la perdita di alcune informazioni poco rilevanti può risultare non drammatica, se viene fatta una scelta opportuna sulle informazioni da "tagliare". Ad esempio le compressioni JPEG per le immagini o MPEG per i video: può essere convenien¬te una lieve perdita di qualità a vantaggio della compressione e conseguente riduzione delle dimensioni. occupate.
Esistono delle applicazioni, invece, per le quali non e accettabile la perdita di informazioni , è sufficiente pensare alla compressione di testi per cui la perdita potrebbe comportare la mancanza di leggibilità. In questi casi è adottata la compressione lossiess ad esempio nei formati ZIP, RAR. Tali compressioni possono adottare algoritmi che si basano sulla misura ,della frequenza con cui si presentano i simboli da codificare: in un testo italiano le lettere "Z" e “Q” si presentano con probabilità molto più bassa rispetto alla lettera "A". In un testo inglese la lettera "E" si presenta con frequenza cento volte maggiore rispetto alla lettera "Q”. É possibile allora associare ai simboli più comuni, un codice più breve rispetto a quello adottato per i simboli meno comuni.
A quest’idea si ispira uno degli algoritmi di compressione più diffusi noto come algoritmo di Huffman, il primo passo dell’algoritmo consiste nel predisporre la tabella dei simboli da comprimere con la probabilità (o la frequenza) di comparsa relativa a ciascuno di essi.


Il secondo passo dell’algoritmo consiste nel costruire un albero ascendente binario, ordinato in base alla frequenza.

Si predispone inizialmente una lista, ordinata in base alla frequenza, dei caratteri che costituiranno i nodi dell’albero. L’albero binario si costruisce partendo dalle foglie verso la radice, unendo per primi tra loro i due caratteri con frequenza minore per dare origine al nodo genitrice che avrà il valore della somme delle due frequenze; man mano si uniranno a due a due, i nodi con minor frequenza fino ad arrivare alla radice. Costruito l’albero può essere effettuata la codifica di ogni carattere partendo dalla radice ed assegnando un bit “0” per ogni ramificazione a sinistra ed un bit “1” per ogni ramificazione a destra incontrata per raggiungere il carattere.



Crittografia
La sicurezza delle reti comprende una molteplicità di problematiche quali la riservatezza dei messaggi spediti per impedire ad intrusi di leggerli, i controlli sui servizi in rete per impedire a persone non autorizzate di utilizzarli, il riconoscimento dell'identità personale nella rete, ecc. Tra gli attacchi più comuni vi sono i worm ovvero un processo che genera continuamente copia di se stesso mettendo in crisi le risorse di an sistema; La scansione delle porte e un metodo impiegato per sondare i punti deboli che un sistema, prima di un attacco.
E impossibile rendere completamente protette ed impenetrabili le risorse di rete da parte di malintenzionati, sono quindi utilizzate tecniche di base per la protezione. Una di queste tecniche è la crittografia dei dati che permette di modificare l'informazione da trasmettere attraverso un codice opportuno in modo tale che il testo cifrato, che viaggia sulle linee, risulti incomprensibile a persone non autorizzate che, pur riuscendo ad accedere ad esso, non sono in possesso del codice di cifratura.


Il testo T viene cifrato attraverso una funzione Fk dipendente da una chiave segreta k e poi trasmesso sul canale. Qui un intruso, prima che il messaggio cifrato M= Fk(T) giunga al destinatario, può intercettarlo per leggerlo o addirittura modificarlo. Poiché l’intruso non conosce la chiave non può decriptare il testo, mentre il destinatario che conosce la chiave non ha difficoltà a decriptare il testo. Nel corso degli anni sono stati adottati numerosi metodi di cifratura di un testo, ovvero:
Cifrari a sostituzione: con questa tecnica ogni lettera viene sostituita con un'altra lettera attraverso lo spostamento dell’alfabeto di k lettere. Dunque K rappresenta proprio la chiave, conoscendo k è possibile decifrare il testo cifrato. Un esempio di cifrari a sostituzione è “L’algoritmo di Cesare”:




Cifrari a Trasposizione: con tale metodo si utilizza una matrice la cui prima riga corrisponde alla chiave che non deve avere lettere ripetute. Nelle altre righe si scrive, in orizzontale, il testo da cifrare. Ad esempio Il testo da cifrare è “Cristillo Andrea” , mentre la chiave è “SUNLIGHT”. Le lettere che compongono la chiave indicano, prese in ordine alfabetico, l’ordine in cui devono essere considerate le colonne per la trasposizione del testo, ovvero ogni colona diventa una riga.




Crittografia simmetrica:con questo termine s'intende l’utilizzo della medesima chiave per cifrare e decifrare un testo. Molte tecniche di cifratura moderna utilizzano però algoritmi molto complessi implemen¬tati sia in hardware, sia in software su moderni sistemi di calcolo. Un ruolo importante nella moderna crittografia lo riveste il DES (Data Encryption Standard), anche la chiave del DES e stata violata nel luglio 1998 dopo 56 ore di calcolo compu-terizzato e nel gennaio 1999 e stata violata in 22 ore e 15 minuti, esso è alla base della moderna crittografia. L'algoritmo del DES, utilizza due dispositivi la P-box (Permutation-box ovvero scatola di permutazione) e la S-box (Substitution-box ovvero scatola di sostituzione). Entrambi possono essere implementati sia in hardware, sia in software.
Una S-box n x n bit ha in ingresso n bit e restituisce in uscita m bit. Essa e formata, nella sua forma più semplice, da un decoder, una P-box ed un encoder collegati sequenza. I tre bit in ingresso al decoder selezionano una delle 8 linee in uscita che viene posta a 1, le restanti linee in uscita dal decoder sono poste a 0. Questi otto bit vanno in ingresso alla P-box che provvede alla loro permutazione in base ai collegamenti interni. In uscita dalla P-box, il bit con valore 1 verrà dunque spostato di posi¬zione ed in ingresso all’ encoder si avrà, una configurazione diversa rispetto a quella in uscita dal decoder.
Crittografia asimmetrica (a chiave pubblica): Problemi legati alla crittografia simmetrica:
  • Il principale problema della crittografia simmetrica sta nella necessità di disporre di un canale sicuro per la trasmissione della chiave;
  • Inoltre, se n persone devono comunicare tra loro, sono necessarie n(n-1)/2 chiavi;
Un punto di debolezza delle tecniche a chiave simmetrica è proprio il fatto di dover mantenere segreta l’unica chiave soprattutto quando deve essere distribuita ai vari utenti di una rete. La conoscenza dell’unica chiave da parte del criptoanalista intruso rende vano qualsiasi algoritmo di cifratura. Questo ha spinto gli studiosi a cercare metodi alternativi.
Sono state dunque progettate a tal fine alcune tecniche che prevedono un algoritmo di cifratura del testo che utilizza una chiave che viene resa pubblica, ed un algoritmo di decifratura con una chiave di decifratura, diversa dalla prima, che viene mantenuta segreta e viene detta private. In definitiva ogni utente deve avere a disposizione due chiavi diverse, una chiave pubblica per la cifratura, nota a tutti, ed una chiave privata (segreta) che viene utilizzata per decifrare. Tale crittografia viene detta asimmetrica.
Altri esempi di tecniche sono:





Livello di Applicazione
Ha come obiettivo interfacciare utente e macchina. Una funzione fondamentale è la gestione dei nomi di dominio, ovvero la gestione dei nomi simbolici al posto degli indirizzi numerici di rete consultando la tabella name-server. Utilizza inoltre dei protocolli per il trasferimento dei file (FTP - File Transfer Protocol) sulla rete ed un particolare protocollo HTTP (HyperText Transfer Protocol) per la navigazione sul web.