Sei sulla pagina 1di 12

LA SICUREZZA NELLE RETI

Introduzione
L’informazione è divenuta una risorsa preziosa che deve essere protetta da qualsiasi possibile attacco.
È necessario proteggerla da accessi non autorizzati (riservatezza o segretezza) e da modifiche non
autorizzate (integrità), al fine di poterla rendere disponibile quando necessario alle entità autorizzate
(accessibilità).

Obiettivi della sicurezza


Riservatezza
Un’organizzazione deve cautelarsi da possibili azioni ostili che mettano a rischio la riservatezza delle proprie
informazioni. Quando si trasmettono delle informazioni riservate con lo scopo di memorizzarle su un
computer remoto o quando si prelevano informazioni da un computer remoto, è necessario garantirne la
protezione.
Integrità
Garantire l’integrità significa assicurare che le modifiche possano essere applicate esclusivamente dalle
entità autorizzate e solo rispettando le procedure previste.
Accessibilità
L’informazione prodotta e archiviata da un’organizzazione deve essere resa disponibile alle entità
autorizzate. Deve inoltre poter essere costantemente aggiornata, quindi accessibile alle entità preposte.

Minacce e contromisure
Le minacce alla sicurezza delle reti possono essere classificate tra attacchi alla comunicazione di rete,
intrusioni nelle reti.
Un attacco è un qualsiasi insieme di azioni che ha lo scopo di compromettere l’integrità, la confidenzialità, e
la disponibilità di una risorsa.
Un’intrusione è un’azione di più ampio spettro che mira a compromettere la sicurezza di una interna rete
LAN.
Per rendere sicura la comunicazione in rete, vengono impiegate tecniche di crittografia. Il termine
crittografia significa “scrittura segreta”. Oggi fa riferimento a tre meccanismi distinti, cifratura a chiave
simmetrica, cifratura a chiave asimmetrica e funzioni hash.
Un intrusion detection system cerca di prevenire qualsiasi azione intrusiva monitorando il traffico di rete.
I virus sono software dolosi che hanno lo scopo di compromettere la sicurezza dei sistemi. Raggiungono la
macchina obiettivo mediante un’azione di download dell’utente che inconsapevolmente scarica il file
dannoso sul proprio computer.
I worm, una volta infettata una macchina si replicano inviando copie di se stessi anche ad altre macchine
mediante la rete. I cavalli di Troia sono software apparentemente utili che quando vengono eseguiti
svolgono operazioni dannose mediante codice nascosto.
La strategia degli antivirus è basata sul tempestivo rilevamento del problema sull’identificazione del virus
che ha infettato il programma.
Purtroppo gli antivirus sono sempre un passo indietro ai virus: affrontano il problema una volta verificatosi
ma non eseguono prevenzione.

Sicurezza della comunicazione


Una comunicazione in rete tra due entità può essere minata da vari tipi di attacchi, che possono essere
raggruppati in base all’obiettivo dell’attacco.
Attacchi
Attacchi alla riservatezza
L’intercettazione e l’analisi del traffico.
Intercettazione
L’intercettazione si riferisce all’accesso non autorizzato ai dati o alla loro intercettazione durante la
trasmissione.
Un’entità non autorizzata potrebbe intercettarne la trasmissione e utilizzarne i contenuti per i propri scopi.
Per contrastare l’intercettazione, i dati possono essere resi incomprensibili all’intercettatore utilizzando le
tecniche di cifratura che verranno discusse in seguito.
Analisi del traffico
Sebbene la cifratura possa rendere i dati incomprensibili all’intercettatore, questi potrebbe comunque
ottenere altri tipi di informazioni monitorando il traffico trasmesso.
Attacchi all’integrità
L’integrità dei dati può essere compromessa da vari tipi di attacchi: modifica, masquerading, ripetizione e
repudiation.
Modifica: In questo caso l’attaccante modifica per i propri scopi le informazioni alle quali ha avuto accesso.
Masquerading: Si parla di masquerading o spoofing quando l’attaccante impersona qualcun altro. Un noto
attacco di masquerading è l’IP spoofing, in cui l’attaccante invia un messaggio a un computer indicando che
il messaggio arriva da un’entità autorizzata.
Ripetizione: Nell’attacco a ripetizione l’attaccante ottiene una copia del messaggio inviato da un utente per
replicarlo in un momento successivo.
Repudation: Questo tipo di attacco differisce dai precedenti perché viene sferrato da una delle parti in
comunicazione, il mittente o il destinatario: il mittente di un messaggio potrebbe successivamente negare
di averlo inviato o il destinatario di un messaggio potrebbe successivamente negare di averlo ricevuto.

Attacchi all’accessibilità
Il più noto attacco all’accessibilità è il denial of service.
Denial of service. Il denial of service è una tipologia di attacco particolarmente diffusa, che può rallentare o
interrompere il servizio di un sistema. Per raggiungere lo scopo l’attaccante ha a disposizione diverse
strategie. Può inviare un numero di richieste fittizie talmente elevato da fare crollare il sistema sotto il peso
del traffico. Può intercettare ed eliminare le risposte del server a un client, facendo credere a quest’ultimo
che il server non sia operativo. Può anche intercettare le richieste dei client, inducendoli a inviare più
richieste e sovraccaricare il sistema.

Cifratura a chiave simmetrica


La cifratura a chiave simmetrica garantisce la riservatezza dei dati.
Nella cifratura a chiave simmetrica si utilizza la medesima chiave sia per l’operazione di cifratura che per
quella di decifratura; la chiave può essere utilizzata per la comunicazione bidirezionale.
Gli algoritmi di cifratura e decifratura sono uno l’inverso dell’altro.
È necessario chiarire che è preferibile rendere gli algoritmi di cifratura e decifratura pubblici mantenendo
segreta la chiave condivisa. Questo comporta che Gaia e Gabriele debbano avere accesso a un secondo
canale, sicuro, per concordare la chiave segreta.
Nella cifratura a chiave simmetrica la chiave che chiude e apre la scatola è la stessa.
Gli algoritmi crittografici a chiave simmetrica possono essere classificati come algoritmi tradizionali o
algoritmi moderni.

Cifrari tradizionali a chiave simmetrica


Algoritmi a sostituzione e algoritmi a trasposizione.
Algoritmi crittografici a sostituzione
Un cifrario a sostituzione sostituisce un simbolo nel testo in chiaro con un altro simbolo. Se i simboli del
testo in chiaro sono caratteri, si rimpiazza un carattere con un altro.
Gli algoritmi crittografici a sostituzione possono essere classificati in monoalfabetici o polialfabetici.
Cifrari monoalfabetici. In un algoritmo crittografico monoalfabetico ogni carattere nel testo in chiaro viene
sempre sostituito dallo stesso carattere nel testo cifrato indipendentemente dalla sua posizione nel testo.
L’algoritmo crittografico aggiunge la chiave al codice del carattere del testo in chiaro, l’algoritmo di
decifratura sottrae la chiave dal codice del carattere del testo cifrato.
I cifrari additivi sono chiamati anche cifrari a scorrimento poiché l’algoritmo di cifratura può essere
interpretato come “scorri il carattere un numero di posizioni verso destra pari al valore della chiave”,
mentre l’algoritmo di decifratura come “scorri il carattere un numero di posizioni verso sinistra pari al
valore della chiave”.

Cifrario polialfabetico. In un cifrario polialfabetico le diverse occorrenze dello stesso carattere possono
corrispondere a un sostituto differente: la relazione fra un carattere nel testo in chiaro e il carattere
corrispondente nel testo cifrato è di uno-a-molti. I cifrari polialfabetici hanno il vantaggio di nascondere la
frequenza delle lettere del testo in chiaro.
Per creare un cifrario polialfabetico è necessario rendere ciascun carattere nel testo cifrato dipendente sia
dal carattere corrispondente nel testo in chiaro sia dalla sua posizione. Questo implica che la chiave sia
costituita da una sequenza di sotto-chiavi. È necessario quindi prevedere uno stream di chiavi k dove k i
viene utilizzato per codificare l’i-esimo carattere nel testo in chiaro ottenendo l’i-esimo carattere nel testo
cifrato.

Cifrari a trasposizione
Un cifrario a trasposizione non sostituisce un simbolo con un altro, ma ne cambia la posizione. In altre
parole un cifrario a trasposizione riordina, o traspone, i simboli.
Per la cifratura e la decifratura viene utilizzata la medesima chiave, ma l’algoritmo utilizza nel secondo caso
la chiave in ordine inverso.

Cifrari a flusso e a blocchi


Nella letteratura scientifica gli algoritmi crittografici simmetrici sono suddivisi in due categorie: cifrari a
flusso (stream cipher) e cifrario a blocchi (block cipher).

Cifrario a flusso. In uno cifrario a flusso la cifratura e la decifratura vengono eseguite un simbolo (un
carattere o un bit) alla volta. Si hanno uno stream di testo in chiaro (P) e uno stream chiave (K).

Cifrario a blocchi. Un cifrario a blocchi cifra un intero gruppo di simboli del testo in chiaro per ottenere un
gruppo di testo cifrato della medesima dimensione. Secondo questa definizione un cifrario a blocchi utilizza
un’unica chiave per crittografare l’intero blocco.
In un cifrario di questo tipo un blocco di testo cifrato dipende dall’intero blocco di testo in chiaro.

Cifrari combinati. Nella pratica i blocchi di testo in chiaro vengono cifrati individualmente, ma utilizzano
una sequenza di chiavi per crittografare il messaggio blocco per blocco. Ogni blocco utilizza una chiave
differente che può essere generata prima o durante il processo di cifratura.

Cifrari moderni a chiave simmetrica


I cifrari a chiave simmetrica tradizionali operano a livello di caratteri, ma l’avvento dei computer rende
preferibile l’impiego di cifrari orientati al bit. Le informazioni da crittografare infatti non sono
necessariamente costituite da solo testo. Risulta opportuno convertire questi dati in un flusso di bit.
Inoltre trattando il testo a livello di bit, ogni carattere viene sostituito da 8 (o 16) bit, il che significa che il
numero di simboli da cifrare diviene 8 (o 16) volte maggiore.
Cifrari moderni a blocchi
Cifra un blocco di n bit di testo in chiaro o decifra un blocco di n bit di testo cifrato. Gli algoritmi di cifratura
e decifratura usano una chiave di k bit e devono essere l’uno l’inverso dell’altro.
Se il messaggio ha meno di n bit è necessario effettuare il padding, ovvero il riempimento con bit non
significativi. Se il messaggio è costituito da più di n bit deve essere suddiviso in blocchi di n bit.

Componenti di un moderno cifrario a blocchi. I recenti cifrari a blocchi possono essere considerati cifrari a
sostituzione se visti come singola unità. Per renderli resistenti agli attacchi non vengono tuttavia progettati
come singola unità ma come combinazione di unità di trasposizione (P-box), unità di sostituzione ( S-box),
operazioni di OR esclusivo (XOR), scorrimento, scambio di elementi, suddivisione e ricombinazione di
elementi.
Una P-box è analoga ai cifrari a trasposizione tradizionali che operano su caratteri, ma traspone bit. Nei
cifrari attuali si impiegano tre tipi di P-box: P-box dirette, a espansione e a compressione. Una S-box può
essere immaginata come un cifrario a sostituzione in miniatura che sostituisce bit.

Data Encryption Standard (DES)


Come esempio di un moderno cifrario a blocchi si prende in considerazione il Data Encryprion Standard
(DES).
In fase di crittografia DES riceve in ingresso un blocco di 64 bit di testo in chiaro e produce in uscita un testo
cifrato di 64 bit. La medesima chiave di 56 bit viene utilizzata sia nella cifratura che nella decifratura. La
permutazione iniziale permuta i 64 bit ricevuti in ingresso secondo una regola predefinita.
Le fasi. DES utilizza 16 fasi, ciascuna delle quali è una trasformazione invertibile. Ciascuna fase può
prevedere fino a due elementi di cifratura (mixer e swapper), che devono essere invertibili. Lo swapper
scambia la metà sinistra del testo con la metà destra ed è ovviamente invertibile. Il mixer è invertibile grazie
all’operazione di XOR.
La funzione DES. Il nucleo del cifrario DES è la cosidetta funzione DES. Essa applica una chiave di 48 bit ai 32
bit più a destra per produrre un output di 32 bit. È costituita da quattro passaggi: una P-box di espansione,
un whitener che aggiunge una chiave, un gruppo di S-box e una P-box diretta.
Poiché Ri-1 è un input a 32 bit e Ki è una chiave a 48 bit, è necessario prima espandere R i-1 a 48 bit con una
permutazione di espansione che soddisfi una regola predeterminata.
Dopo la permutazione di espansione, DES applica l’ operatore XOR fra la parte destra dell’espansione e la
chiave di fase. Le S-box effettuano il vero mixing: DES utilizza 8 S-box ognuna con 6 bit di input e 4 bit di
output. L’ultima operazione della funzione DES è una permutazione diretta con ingresso e uscita di 32 bit.
Generazione della chiave. Il generatore della chiave di fase crea sedici chiavi di 48 bit a partire dalla chiave
di cifratura di 56 bit.

Cifrari a flusso moderni


I moderni cifrari a flusso effettuano la cifratura e la decifratura r bit alla volta. Si ha uno stream di bit di
testo in chiaro P, uno stream di bit di testo cifrato C e un flusso di bit chiave K sono parole di r bit.
I cifrari a flusso sono più veloci dei cifrari a blocchi e la loro implementazione hardware è più semplice.
I cifrario a flusso sincrono più semplice e sicuro è l’one-time-pad.
Questo algoritmo utilizza una chiave costituita da un flusso di bit che viene scelto casualmente per ogni
operazione di cifratura.
Questo cifrario è cosi perfetto che potrebbe sembrare ideale: non vi è alcuna relazione fra il testo cifrato e il
testo in chiaro.

Cifratura a chiave asimettrica


La differenza concettuale fra i due sistemi è relativa alla modalità con cui gestiscono l’informazione segreta
è personale: ciascuna persona crea e conserva privatamente la propria informazione riservata.
La crittografia a chiave simmetrica si basa sulla condivisione della chiave segreta. La crittografia a chiave
asimmetrica si basa sulla segretezza della chiave personale.
Vi sono altri aspetti di sicurezza oltra alla cifratura che richiedono la crittografia a chiave asimmetrica: tra
questi vi sono l’autenticazione e la firma digitale.
La crittografia asimmetrica si basa sull’applicazione si funzioni matematiche a numeri.
Nella crittografia asimmetrica, il testo in chiaro e il testo cifrario sono considerati numeri; la cifratura e la
decifratura sono funzioni matematiche applicate a numeri che consentono di ottenere altri.
La crittografia a chiave asimmetrica impiega due chiavi separate: una privata e una pubblica.

L’idea generale
La responsabilità di garantire la sicurezza ricade principalmente sul destinatario che deve creare due chiavi:
una privata e una pubblica. Questo canale non debba assicurare la riservatezza, deve garantire
autenticazione e integrità.

Testo in chiaro/testo cifrato


Il testo e il testo cifrato nella crittografia asimmetrica sono considerati numeri interi. Il messaggio deve
essere codificato come un intero prima della cifratura; l’intero risultante della decifratura deve essere
ritrasformato nel messaggio.
La crittografia asimmetrica è solitamente impiegata per cifrare o decifrare quantità limitate di infromazioni.

Un fatto importante spesso poco compreso è che l’avvento della crittografai asimmetrica non elimina
affatto la necessità della crittografia simmetrica. Infatti la crittografia asimmetrica, che utilizza funzioni
matematiche per la cifratura e la decifratura, è molto più lenta della crittografica simmetrica. La crittografia
simmetrica è tuttora necessaria per codificare messaggi di notevoli dimensioni. La crittografia asimmetrica
è necessaria per l’autenticazione, la firma digitale e lo scambio della chiave segreta.

Sistema crittografico RSA


Uno degli algoritmi più classici è il sistema crittografico RSA. RSA utilizza due esponenti: e pubblico e d
privato. Si supponga che P sia il testo in chiaro e C il testo cifrato.

La procedura
Gabriele sceglie due numeri grandi p e q per calcolare n = p x q e o = (p-1) x (q-1).
Gabriele sceglie poi e e d tali che (e x d) mod o = 1. Gabriele pubblicizza e ed n alla comunità come chiave
pubblica, mentre conserva d come chiave privata. Chiunque, può crittografare un messaggio e inviarne il
testo cifrato a Gabriele, usando C = (P e) mod n.

Message digest
Vi sono casi in cui pur non essendo richiesta la riservatezza, risulta di fondamentale importanza l’integrità: il
messaggio originale non deve poter essere modificato.
Un modo per preservare l’integrità è quella di inviare insieme al messaggio un codice generato dal mittente
e dipendente dal messaggio. Questo codice viene elaborato con un particolare algoritmo chiamato funzione
hash crittografica. Questa funzione crea un’immagine compressa del messaggio, chiamata digest, che può
essere utilizzata come verifica dell’integrità del messaggio Gabriele, per verificare che il messaggio ricevuto
e confronta il nuovo digest con quello inviato da Gaia: se risultano identici Gabriele ha la garanzia che il
messaggio originale non è stato modificato.
Si noti che il digest dipende dal messaggio ma viene inviato separatamente, per cui il messaggio viaggia in
chiaro e non è preservata la confidenzialità.
Funzioni hash
Una funzione hash crittografica riceve un messaggio di lunghezza arbitraria e produce un digest di
lunghezza fissa. Il modo migliore per raggiungere questo risultato è tramite un processo iterativo: si applica
una funzione con input di dimensioni fisse viene chiamata funzione di compressione. Essa comprime una
stringa di n bit per crearne una di m bit, dove n è solitamente maggiore di m. Questo schema viene
chiamato funzione hash crittografica iterata.
L’ultima versione, la MD5.
Per ovviare ai limiti di sicurezza degli algoritmi MD è stato inventato l’algoritmo SHA. Si tratta di uno
standard sviluppato dal NIST che produce un digest di 160 bit.

Firma digitale
Un altro modo per garantire l’integrità e l’autenticazione di un messaggio è la firma digitale.
Il concetto di firma è molto familiare: una persona firma un documento per garantire che ne è l’autore o
che lo approva. La firma costituisce la prove che il documento proviene da una determinata entità.

Funzionamento
Gaia firma il messaggio M cifrandolo con la sua chiave privata. La cifratura del messaggio M costituisce
proprio la firma S di Gaia. A questo punto Gaia invia sia il messaggio M sia la firma S a Gabriele, il quale
verifica l’autenticità del messaggio applicando la chiave pubblica di Gaia. Se il messaggio che Gabriele
ottiene è uguale a quello inviato da Gaia allora il messaggio è autentico.
La firma digitale richiede un sistema crittografico a chiave pubblica. Il firmatario firma con la propria chiave
privata; il destinatario verifica con la chiave pubblica del firmatario.
Si dovrebbe fare un distinzione fra l’impiego delle chiavi pubblica e privata nella firma digitale rispetto al
loro impiego nei sistemi crittografici per garantire la riservatezza.
Nella firma digitale vengono invece impiegate le chiave pubblica e privata del mittente: quest’ultimo utilizza
la propria chiave privata per firmare il messaggio, il destinatario, utilizza la chiave pubblica del mittente per
verificare l’autenticità del messaggio.
Un sistema crittografico utilizza le chiavi pubblica e privata del destinatario per garantire la riservatezza; la
firma digitale impiega le chiavi pubblica e privata del mittente.

Servizi
Autenticazione di messaggio. Uno schema di firma digitale fornisce l’autenticazione di messaggio in modo
analogo a quanto ottenibile con una firma sicura convenzionale.
Integrità del messaggio. L’integrità del messaggio viene garantita sia che si firmi il messaggio, sia che si
firmi il relativo digest.

Non-repudiation
Una possibile soluzione consiste nel fare intervenire una terza parte fidata, che faccia da tramite da Gaia e
Gabriele al fine di garantire che i messaggi inviati non possano essere disconosciuti dal mittente.
Il centro, dopo aver verificato l’autenticità del messaggio ricevuto da Gaia, salva quindi nel proprio archivio
una copia del messaggio con l’identità del mittente, l’identità del destinatario e un timestamp .

Riservatezza. La firma digitale non garantisce la riservatezza della comunicazione. Nel caso fosse richiesta è
necessario crittografare messaggio e firma con un cifrario a chiave simmetrica o asimmetrica.

Autenticazione di entità
L’autenticazione di entità è una tecnica progettata per consentire a una parte di verificare l’identità di una
seconda parte. L’entità può essere una persona, un processo, un client o un server.
Vi sono due differenze importanti fra autenticazione di entità e autenticazione di messaggio.
1. L’ autenticazione di messaggio potrebbe non avviene in tempo reale.
Quando Gaia richiede l’autenticazione di entità, invece, non vi è alcuna comunicazione di messaggi
fino a quando Gaia non sia autenticata da Gabriele. Gaia deve essere online e prendere parte attiva
nel processo.
Quando Gaia invia una e-mail a Gabriele è richiesta l’autenticazione di messaggio. Quando Gaia
esegue un pagamento su Internet è richiesta l’autenticazione di entità.
2. L’autenticazione di messaggio autentica semplicemente un particolare messaggio.
Nella autenticazione di entità il pretendente deve identificarsi al verificatore.

Autenticazione con chiave simmetrica


L’autenticazione di un’entità può avvenire mediante la crittografia a chiave simmetrica. In questo caso il
segreto è la chiave segreta condivisa, conosciuta da entrambi il pretendente e il verificatore. Il primo
messaggio informa solamente il verificatore che il pretendente vuole essere autenticato. Il secondo
messaggio R è un numero casuale chiamato nonce. Il pretendente cifra il nonce utilizzando la chiave
segreta condivisa e al verificatore invia il risultato. Il verificatore decifra il messaggio: se il nonce così
ottenuto è identico a quello inviato, il precedente risulta autenticato.

Autenticazione con chiave asimmetrica


In questo caso l’informazione segreta è la chiave privata del pretendente. Questi deve dimostrare di
conoscere la chiave primaria associata alla propria chiave pubblica che è ovviamente liberamente
disponibile. Il verificatore cifra quindi un nonce da lui generato con la chiave pubblica del pretendente, e lo
invia al pretendente. Il pretendente lo decifra con la propria chiave privata e lo invia al dimostratore, il
quale dichiara autentico il pretendente se il nonce ricevuto è uguale a quello che aveva inviato.

Autenticazione con firma digitale


Il pretendente utilizza la propria chiave segreta per firmare. Gabriele autentica Gaia chiedendole di cifrare
con la propria chiave privata un nonce da lui generato. Se il nonce cifrato che Gabriele riceve indietro è
correttamente decifrabile con la chiave pubblica di Gaia allora Gabriele può dichiarare l’autenticità di Gaia.

Gestione delle chiavi


Distribuzione della chiave simmetrica

Se Gaia dovesse scambiare messaggi confidenziali con N persone, avrebbe bisogno di N chiavi differenti.
Oltre all’elevatissimo numero di chiavi esiste il problema della loro distribuzione. Se Gaia e Gabriele
desiderano comunicare fra di loro, devono trovare un modo per scambiarsi la chiave segreta.

KDC: Centro per la distribuzione delle chiavi


Una possibile soluzione pratica consiste nell’impiego di una terza parte fidata, chiamata KDC (Key
Distribution Center). Ogni utente stabilisce una chiave segreta condivisa con il KDC.
A questo punto il processo è il seguente:
1. Gaia invia al KDC la richiesta di una chiave segreta di sessione condivisa da sé stessa e Gabriele.
2. Il KDC informa Gabriele della richiesta di Gaia.
3. Se Gabriele è d’accordo, viene creata una chiave di sessione fra i due.

KDC multipli. Quando il numero di utenti di un KDC diventa eccessivo, è necessario creare più KDC: la
comunità di utenti viene divisa in più domini, per ognuno dei quali vengono previsti uno o più KDC. Se Gaia
desidera inviare un messaggio confidenziale a Gabriele, che appartiene a un dominio differente, contatta il
proprio KDC il quale a sua volta contatta il KDC nel dominio di Gabriele; Si possono prevedere KDC locali,
nazionali e internazionali.
Chiavi di sessione. Un KDC crea una chiave segreta per ciascun utente. Questa chiave segreta deve essere
utilizzata esclusivamente fra l’utente e il KDC.
Il KDC può creare una chiave di sessione per Gaia e Gabriele con il centro e fra di loro prima che venga
stabilita la chiave di sessione. Una volta terminata la comunicazione, la chiave di sessione viene eliminata.

Accordo con chiave simmetrica


Gaia e Gabriele possono creare una chiave di sessione senza utilizzare un KDC. Questo metodo di creazione
della chiave di sessione è noto come simmetric-key-agreement.

Diffie-Hellman Key Agreement


Questa tecnica consente a due utenti di creare una chiave simmetrica di sessione senza dover ricorrere a un
KDC. I due utenti scelgono due numeri.

Ecco i passi della procedura:


1. Gaia sceglie un numero grande x tale che 0 <= x <= p-1 e calcola R 1 = gx mod p. Gabriele sceglie un
altro numero grande casuale y tale che 0 <= y <= p – 1 e calcola R 2 = gy mod p.
2. Gaia invia R1 a Gabriele. Si noti che Gaia non invia il valore di x, ma solo R 1.
3. Gabriele invia R2 a Gaia. Anche in questo caso si noti che Gabriele non invia il valore di y, ma solo R 2.
4. Gaia calcola K = (R2)x mod p, Gabriele calcola K = (R1)y mod p.
K è la chiave simmetrica di sessione ricercata.
Nel metodo Diffie-Hellman la chiave simmetrica è K = g xy mod p.

Distribuzione della chiave pubblica


Nella crittografia a chiave asimmetrica gli utenti non hanno alcuna necessità si definire una chiave
simmetrica condivisa.
Nella crittografia a chiave pubblica ogni utente ha libero accesso alla chiave pubblica di ogni altro
utente.
Certification authority
La soluzione classica per la distribuzione delle chiavi consiste nel creare un certificato di chiave
pubblica.
Gabriele può utilizzare i servizi di una Certification Authority (CA), un’organizzazione statale o regionale
che associa una chiave pubblica a un’entità e genera un certificato.
La CA, che a sua volta ha una chiave pubblica ben nota che non può essere contraffatta, verifica
l’identità di Gabriele. Chiede quindi la chiave pubblica di Gabriele e la scrive su un certificato.
La CA firma il certificato con la propria chiave privata. La chiave pubblica di Gabriele potrà essere
ottenuta decifrando il certificato con la chiave pubblica della CA.
I certificati potrebbero essere codificati con formati diversi. Un certificato potrebbe codificare la chiave
pubblica in un formato diverso da quello si un secondo certificato.
L’ITU ha progettato una struttura per i certificati chiamata X.509, che è stata recepita dalla comunità di
Internet con alcune modifiche. X.509 descrive il certificato con una tecnica strutturata, utilizzando un
noto protocollo chiamato ASN.1.

Sicurezza al livello trasporto


Il Secure Socket Layer (SSL) fornisce sicurezza al livello di trasporto tra il TCP e le applicazioni che lo
utilizzano. Fra i servizi forniti da SSL, vi sono l’autenticazione di client e server, la riservatezza e
l’integrità dei dati. I programmi client/server di livello applicazione, che utilizzano i servizi di TCP
possono incapsulare i propri dati in pacchetti SSL.
Architettura di SSL
Tipicamente SSL può ricevere dati da qualsiasi protocollo di livello applicazione, sebbene solitamente si
utilizzi l’http. I dati ricevuti dall’applicazione vengono compressi, firmati e crittografati. I dati vengono
quindi passati a un protocollo affidabile di livello trasporto come il TCP.
SSL prevede che le chiavi utilizzate in una direzione siano differenti da quelle utilizzate nell’altra
direzione.
Una volta stabilite le chiavi, il client e il server possono scambiarsi le informazioni in modo sicuro.
SSL definisce quattro protocolli in due livelli: Record è il protocollo di base: contiene i messaggi degli
altri tre protocolli e i dati provenienti dal livello applicazione. Il protocollo Handshake fornisce i
parametri di sicurezza per il procollo Record; stabilisce l’insieme di algoritmi crittografici supportati
dalle due parti(cipher suite) e fornisce le chiavi e i parametri di sicurezza. Autentica anche il server al
client e il client al server quando necessario. Il protocollo ChangeCipherSpec è utilizzato per segnalare la
disponibilità delle informazioni crittografiche segrete. Il protocollo Alert è utilizzato per comunicare
condizioni di errore.

Protocollo Handshake
Il protocollo Handshake regola la prima parte di SSL e prevede opportuni messaggi per negoziare la
cipher suite, per autenticare il client al server e viceversa quando necessario, per scambiare
informazioni utili alla definizione dei parametri crittografici segreti.

Fase 1: prevede la scelta delle funzioni di sicurezza e lo scambio di valori necessari per la creazione
delle chiavi. Viene stabilito un ID di sessione e viene definita la cipher suite.
Al termine della prima fase il client e il server hanno concordato la versione di SSL, gli algoritmi
crittografici, il metodo di compressione e i due numeri casuali per la generazione delle chiavi.

Fase 2: Nella fase II, il server e il client si autenticano, inviando il proprio certificato. Al termine della
fase II il server e il client sono autenticati e conoscono le chiavi pubbliche l’uno dell’altro.

Fase 3: Il pre-master secret viene generato dal client e inviato al server. Per rendere sicura la
comunicazione, il client può usare RSA. Il client genera il pre-master secret, lo cifra con la chiave
pubblica del server e lo invia al server.

Fase 4: completamento e terminazione. Client e server conoscono il pre-master secret e possono


generare il master secret e le chiavi necessarie per lo scambio di messaggi.

Generazione delle chiavi


Per garantire riservatezza e integrità di messaggio, SSL ha bisogno di sei parametri crittografici segreti:
quattro chiavi e due vettori di inizializzazione, IV (initialization vector).
Il client e il server richiedono una chiave per l’autenticazione del messaggio, una chiave per la cifratura
e una IV come blocco originale per i calcoli.
I parametri necessari vengono generati con la seguente procedura:
1. Con il protocollo di Handshake il client e il server arrivano a condividere un pre-master secret;
2. A partire dall’informazione segreta pre-master viene creata un’informazione segreta master di 48
byte, utilizzando due funzioni hash.
3. L’informazione segreta master è utilizzata per creare i dati per la creazione di chiavi di lunghezza
variabile applicando il medesimo insieme di funzioni hash e anteponendo costanti differenti. Il
modulo viene ripetuto fino a quando si ottiene una quantità sufficiente di dati per la creazione di
chiavi.
4. Vengono estratte sei informazioni segrete differenti dai dati per creazione chiavi
Protocollo ChangeCipherSpec
SSL prevede che le parti non possano utilizzare questi codici segreti fino a quando non abbiano inviato e
ricevuto un messaggio speciale chiamato ChangeCipherSpec.

Protocollo Alert
SSL, utilizza il protocollo Alert per segnalare errori e condizioni anormali.

Protocollo Record
Il protocollo Record trasporta i messaggi dei livelli superiori

Sicurezza al livello rete: IPsec


È necessario garantire la sicurezza anche al livello di rete. IPsec è un insieme di protocolli sviluppato
dall’IETF per fornire garanzie di sicurezza ai pacchetti di livello rete. IPsec serve ad autenticare e rendere
confidenziali i pacchetti del protocollo IP. IPsec può operare in due modi: in modalità trasporto o in
modalità tunnel.

Modalità trasporto
Nella modalità trasporto, IPsec protegge ciò che viene fornito dal livello trasporto al livello rete.
Questa modalità protegge i dati incapsulati nei pacchetti di livello rete.
Si noti che la protezione è solo sui dati. L’intestazione e il trailer di IPsec vengono aggiunti ai dati
provenienti dal livello trasporto prima dell’intestazione IP.
L’host mittente sfrutta il protocollo IPsec per autenticare e/o cifrare i dati consegnati dal livello trasporto.
L’host destinatario sfrutta il protocollo IPsec per verificare l’autenticità dei dati e/o decifrarli, per poi
consegnarli al livello trasporto.

Modalità tunnel
Nella modalità tunnel IPsec permette di proteggere l’intero pacchetto IP. L’intero pacchetto IP, viene
incapsulato in un pacchetto IPsec. Il tutto deve essere poi inserito in un pacchetto IP: verrà quindi aggiunta
una nuova intestazione IP.
La modalità tunnel viene solitamente utilizzata fra due router, fra un host e un router o fra un router e un
host. L’intero pacchetto originale viene protetto da intrusioni fra il mittente e il destinatario.

Due protocolli per la sicurezza


IPsec definisce due protocolli per ottenere la riservatezza e l’autenticazione dei pacchetti IP: il protocollo
AH e il protocollo ESP.

Protocollo AH
Il protocollo AH è stato progettato per garantire l’autenticazione del mittente e l’integrità dei dati contenuti
nel pacchetto IP.
Vengono utilizzati una funzione hash e un algoritmo crittografico a chiave privata per creare un digest del
messaggio. Il digest viene quindi inserito in un’intestazione di autenticazione nella posizione appropriata in
funzione della modalità utilizzata.
Un campo all’interno dell’intestazione AH specifica il protocollo originale. Ecco i passi necessari per
aggiungere un’intestazione di autenticazione.
1. Si aggiunge un’intestazione di autenticazione al payload
2. Si effettua l’eventuale riempimento per rendere la lunghezza totale adatta allo specifico algoritmo
di hashing.
3. L’hashing si basa sull’intero pacchetto, tuttavia nel calcolo del digest del messaggio vengono
considerati solo i campi dell’intestazione IP.
4. I dati di autenticazione vengono inseriti nell’intestazione di autenticazione.
5. Viene aggiunta l’intestazione IP dopo aver reimpostato il valore del campo protocollo a 51.
Il protocollo AH garantisce l’autenticazione e l’integrità dei dati, ma non la riservatezza.

Protocollo ESP
Il protocollo AH non cifra i dati all’interno del pacchetto IP, fornisce solo servizi di integrità e autenticazione
del mittente. IPsec ha definito successivamente un altro protocollo, chiamato ESP, che fornisce
autenticazione di sorgente, integrità e riservatezza. Il protocollo ESP aggiunge un’intestazione e un trailer.
Si noti che i dati di autenticazione ESP sono aggiunti in coda al pacchetto, per facilitarne il calcolo. Quando
un datagram IP trasporta un pacchetto ESP, il valore del campo protocollo dell’intestazione IP è 50. Il campo
next header nel trailer di ESP specifica il protocollo originale.
Ecco come avviene la formazione del pacchetto ESP:
1. il trailer ESP viene aggiunto al payload;
2. payload e trailer vengono crittografati;
3. viene aggiunta l’intestazione ESP;
4. intestazione ESP, palyload ed ESP trailer vengono usati per generare i dati di autenticazione;
5. i dati di autenticazione vengono aggiunti al termine del trailer ESP;
6. viene aggiunta l’intestazione IP dopo averne impostato il valore del campo protocollo a 50.

ESP supporta tutte le funzionalità di AH alle quali aggiunge la riservatezza.


Entrambi i protocolli hanno previsto un meccanismo di protezione contro gli attacchi a replay utilizzando
opportuni numeri di sequenza e una finestra scorrevole nel destinatario.

Reti private virtuali (VPN)


Una delle applicazioni di IPSec è nelle reti private virtuali. Una rete privata virtuale è una tecnologia sempre
più utilizzata dalle aziende che adottano Internet per le comunicazioni interne ed esterne, ma che
richiedono riservatezza nelle comunicazioni. Una VPN è una rete che è privata ma virtuale: privata perché
garantisce la riservatezza all’organizzazione, virtuale poiché non utilizza realmente dei collegamenti WAN
privati. La rete è fisicamente pubblica ma virtualmente privata.
La tecnologia VPN impiega il protocollo ESP di IPSec in modalità tunnel.

I firewall
La prima misura di sicurezza adottata per proteggere una rete LAN è costituita dal firewall. Un firewall è un
dispositivo installato fra la rete interna di un’organizzazione e Internet. È progettato per inoltrare alcuni
pacchetti e filtrarne altri.
I firewall sono solitamente classificati in firewall a filtraggio di pacchetti o proxy.

Firewall a filtraggio di pacchetti


Un firewall a filtraggio di pacchetti funziona filtrando i pacchetti IP in base alle informazioni contenute nelle
intestazioni dei livelli rete e trasporto. Il firewall a filtraggio di pacchetti è un router che utilizza una tabella
che permette di decidere quali pacchetti inoltrare e quali eliminare.

Firewall proxy
Un firewall a filtraggio di pacchetti controlla il traffico in base alle informazioni disponibili nei livelli rete e
trasporto. A volte si ha la necessità di filtrare il traffico in base al contenuto dei messaggi. In questo caso un
firewall a filtraggio di pacchetti non è sufficiente poiché non è in grado di differenziare i pacchetti che
arrivano alla porta 80 (http) : è necessario esaminare il messaggio a livello applicazione.
Una possibile soluzione è l’utilizzo di un computer proxy che si interpone fra il computer del cliente e il
computer dell’azienda. Quando il processo client dell’utente richiede una pagina web, l’application gateway
esegue un processo server per ricevere la richiesta e che apre il pacchetto a livello applicazione per
determinare la legittimità della richiesta.
Un firewall proxy filtra i pacchetti a livello applicazione.

Potrebbero piacerti anche