aziendale. Vi è anche un particolare approfondimento sulla situazione della
sicurezza informatica in Italia
Nel secondo capitolo vengono descritte le principali tecnologie a disposizione per
la sicurezza e per la protezione delle informazioni.
Nel terzo capitolo si affronta il problema della realizzazione di una corretta
politica di sicurezza all'interno di un'organizzazione.
Il quarto capitolo descrive i più importanti organismi italiani ed internazionali che
si occupano di sicurezza informatica.
E' presente anche un elenco commentato delle principali risorse Internet sulle
quali è possibile trovare documentazione, software, e informazioni di ogni tipo.
2
Capitolo Primo
1. SICUREZZA INFORMATICA E
PROBLEMATICHE RELATIVE
1.1 CONCETTI BASILARI DI SICUREZZA INFORMATICA.
La sicurezza informatica è stata definita in vari modi, ma la definizione sulla
quale è stato raggiunto il più vasto consenso è quella riportata dal NIST nel 1995
[8]:
Sicurezza Informatica (Computer Security): la protezione fornita ad un
sistema informativo allo scopo di ottenere, come obiettivo applicabile, la
conservazione dell'integrità, della disponibilità e della confidenzialità delle
risorse del sistema informativo stesso (includendo hardware, software,
1
firmware, dati, e sistemi di telecomunicazione).
Oltre a questi tre concetti di base riguardanti l'informazione, bisogna considerare
altri tre concetti legati alle persone che usano l'informazione: si tratta
dell' autenticazione, dell' autorizzazione e del non ripudio [9].
Diamo ora la definizione formale di questi concetti:
• Integrità implica che l'informazione deve essere protetta da modifiche non
autorizzate. Il concetto di integrità può presentare due aspetti:
• Integrità dei dati: l'informazione e i programmi possono essere modificati
soltanto in una maniera specificata ed autorizzata [12].
• Integrità del sistema: è la caratteristica di un sistema che adempie alle
funzioni per cui è destinato in maniera inalterata, libera da modifiche non
autorizzate, deliberate o involontarie [14].
• Disponibilità implica che gli utenti autorizzati non devono essere in alcun
modo ostacolati nell'accesso o nell'uso delle risorse del sistema [12][18].
1
In realtà, i tre concetti basilari di integrità, disponibilità e confidenzialità sono stati
introdotti nel 1991 dal Dipartimento del Commercio e dell'Industria inglese, nel
documento che illustra i criteri ITSEC [10] , che sarà esaminato in seguito.
3
• Confidenzialità implica che informazioni considerate private o confidenziali
non devono essere accessibili ad utenti non autorizzati [8].
• Autenticazione è la verifica che un utente è proprio colui che dice di essere.
L'autenticazione è una procedura di verifica di identità e non va confusa con
l' identificazione, che avviene quando l'utente dichiara la sua identità. In altre
parole, la procedura di identificazione consiste nel rispondere alla domanda:
"Chi sei?", mentre la procedura di autenticazione consiste nel rispondere alla
domanda: "Sei quello che dici di essere?". Per esempio, in un sistema
client/server un utente su di una stazione client può essere identificato dal
server mediante un ID utente, ed essere autenticato mediante una password
segreta nota solo a lui, oppure mediante una sua caratteristica fisica (sistemi
biometrici).
• Autorizzazione è l'atto che stabilisce se un particolare utente ha il diritto di
compiere una determinata attività, come la lettura di un file o l'esecuzione di
un programma. Autenticazione e autorizzazione procedono di pari passo:
affinché un utente possa compiere le attività per le quali è autorizzato, deve
prima essere autenticato.
• Non ripudio: un utente non può negare di aver compiuto le attività eseguite
dopo essere stato autenticato.
1.2 I REQUISITI DI SICUREZZA DI UN SISTEMA INFORMATIVO E LA NECESSITÀ DI
UNA POLITICA DI SICUREZZA.
Sulla base dei concetti di base appena illustrati è possibile definire quali sono i
requisiti di sicurezza di un sistema informativo: oltre a dover garantire l'integrità,
la disponibilità e la confidenzialità, un sistema informativo sicuro deve istituire
dei meccanismi di controllo di accesso alle proprie risorse (mediante
autorizzazione ed autenticazione) e dei meccanismi di auditing che devono
assicurare le funzionalità ispettive necessarie a proteggere il sistema da errori
operativi di utenti autorizzati, o da azioni dolose effettuate da intrusi o dipendenti
infedeli. Allo scopo di garantire questi requisiti dovranno essere implementate le
soluzioni tecniche più appropriate alla tipologia di organizzazione in maniera tale
da ottenere una sinergia tra le varie funzionalità, evitando che un'implementazione
troppo rigida di una di esse limiti la funzionalità delle altre.
L'aspetto tecnico è però solo uno degli aspetti da considerare: l'altro, sicuramente
più importante, è quello relativo alla creazione e gestione di una corretta politica
di sicurezza. Con questo termine si intende un insieme di regole e norme
4
comportamentali che regolano come un'organizzazione gestisce, protegge e
distribuisce l'informazione. [14]
La necessità dell'adozione di una adeguata politica di sicurezza risiede nel fatto
che, per quanti sforzi possano essere compiuti e per quante risorse possano essere
impiegate, la sicurezza di un sistema informativo non potrà mai essere garantita in
maniera assoluta e definitiva. Nessun sistema informativo potrà mai essere
completamente al riparo da eventi incontrollabili quali ad esempio la perdita
accidentale di dati dovuta a bugs nel software, la sottrazione o la distruzione di
dati da parte di dipendenti corrotti, la distrazione di dipendenti che lascino le loro
password scritte in evidenza, l'intrusione di qualche hacker particolarmente abile.
Per questo è fondamentale che la consapevolezza della necessità di una adeguata
politica di sicurezza debba investire tutta l'organizzazione aziendale, a partire dai
livelli più alti (i criteri su cui impostare una politica di sicurezza adeguata alle
esigenze di un'organizzazione aziendale saranno affrontati in maniera
approfondita nel corso del terzo capitolo).
E' inoltre importante rilevare che la sicurezza è un processo dinamico:
l'aggiornamento continuo dei sistemi di sicurezza e degli amministratori di
sistema deve consentire di adattare nel tempo i meccanismi di protezione alle
nuove esigenze che si potranno presentare.
1.3 CLASSIFICAZIONE DELLE SITUAZIONI DI RISCHIO PER LA SICUREZZA.
Per proteggere in maniera adeguata un sistema informativo è necessario capire
bene da che cosa e da chi esso dovrà essere difeso. A tale scopo è utile riportare
alcune definizioni largamente usate in letteratura per la definizione di situazioni
che possono rendere un sistema non sicuro [14] :
• Minaccia: ogni circostanza o evento potenzialmente in grado di arrecare
danno ad una organizzazione attraverso la modifica, la distruzione, la
rivelazione di informazioni o l'interruzione del servizio (denial of service).
• Vulnerabilità: una debolezza nelle procedure, nelle implementazioni, nei
controlli interni, nel progetto del sistema di sicurezza, che potrebbe essere
sfruttata per violare la politica di sicurezza del sistema.
• Contromisura: ogni azione, dispositivo, procedura, tecnica, o qualsiasi altra
misura che riduca la vulnerabilità di un sistema o le minacce contro di esso.
• Rischio: la probabilità che una particolare minaccia possa sfruttare una
particolare vulnerabilità del sistema.
5
Capitolo Secondo
2. METODI E TECNOLOGIE PER LA
SICUREZZA INFORMATICA
2.1 CRITTOGRAFIA
La crittografia è l'arte di nascondere l'informazione e di renderla intelligibile solo
ad entità autorizzate. Essa può essere definita anche come lo studio delle tecniche
di codifica e decodifica dei dati. La codifica è il processo attraverso il quale un
messaggio (testo in chiaro o plaintext) viene trasformato in un altro messaggio
(testo codificato o cifrato o ciphertext) usando una funzione matematica e una
speciale password di codifica detta chiave.
La decodifica è il processo inverso: il testo cifrato è trasformato nel testo in chiaro
originale usando una funzione matematica ed una chiave.
La crittografia è una delle tecniche di sicurezza più utilizzate e più diffuse nei
sistemi informativi, con essa è possibile:
• proteggere da accessi non autorizzati le informazioni memorizzate su di un
sistema, soprattutto nel caso in cui più persone, con diversi diritti di
segretezza, possono accedere allo stesso sistema;
• proteggere la trasmissione dei dati su di un canale non sicuro;
• rilevare e scoraggiare alterazioni accidentali o intenzionali sui dati trasmessi;
• autenticare il mittente di un messaggio inviato su di un canale insicuro.
Esistono però delle tipologie di attacco contro le quali la crittografia non può fare
assolutamente nulla, e cioè:
• un attacco che distrugga completamente i dati;
• un intruso potrebbe, dopo essere riuscito a penetrare nel sistema, modificare il
codice dello stesso programma di codifica, in maniera tale da poter registrare
tutte le chiavi e poterle poi utilizzare in un secondo momento;
• un attaccante (in questo caso si parla anche di crittoanalista) potrebbe riuscire
a trovare un metodo relativamente semplice e finora sconosciuto per
25
decodificare il messaggio codificato, riuscendo, come si dice, a forzare il
metodo di codifica;
• un intruso potrebbe riuscire a leggere il messaggio prima della codifica o dopo
la decodifica.
Per queste ragioni, la crittografia, sebbene costituisca un potente mezzo di
protezione dei dati, deve comunque essere inquadrato all'interno di un sistema di
sicurezza globale, che comprenda ad esempio, anche le tecniche di controllo
d'accesso che esamineremo in seguito.
2.1.1 Robustezza di un Sistema di Crittografia.
Per robustezza di un sistema crittografico si intende la capacità del sistema stesso
a resistere agli attacchi. I principali fattori che la influenzano sono:
• la segretezza della chiave;
• la difficoltà nell'indovinare la chiave o nel trovarla provando tutte le possibili
chiavi (attacco di forza bruta). A questo proposito una chiave più lunga è
sicuramente più difficile da indovinare;
• la difficoltà di invertire l'algoritmo di codifica senza conoscere la chiave;
• l'esistenza o l'assenza di back doors o altri modi di decrittare un file molto
facilmente senza conoscere la chiave;
• la difficoltà nel decrittare un file a partire dalla decodifica di parte di esso
(known text attack )
• l'esistenza di proprietà ricorrenti e conosciute all'interno del messaggio: ad
esempio una società od un ente potrebbero mandare messaggi che presentano
sempre la stessa intestazione e lo stessa nota di chiusura messaggio. (questo
tipo di regolarità consentì agli Alleati, durante la seconda guerra mondiale, di
forzare il sistema di cifratura tedesco Enigma ). In altre parole il testo
codificato deve apparire come un insieme di caratteri random a tutte le analisi
statistiche standard;
• la resistenza a tutti i tipi di attacchi già conosciuti.
Se un sistema crittografico soddisfa tutti i requisiti sopra menzionati, può essere
considerato sicuro e inattaccabile? Certamente no. Molti crittosistemi attualmente
forzati, erano considerati sicuri in passato.
26
2.1.2 Principali Sistemi di Crittografia.
I moderni sistemi crittografici utilizzano degli algoritmi molto complessi; quelli
attualmente in uso sono di due tipi:
• Crittografia A Chiave Privata in cui viene usata la stessa chiave per la
codifica e la decodifica del messaggio. Questo metodo viene detto anche
Crittografia a Chiave Simmetrica.
• Crittografia A Chiave Pubblica che utilizza due chiavi: una Chiave Pubblica,
per codificare il messaggio, ed una Chiave Privata, per decodificarlo. Il nome
chiave pubblica deriva dal fatto che questa chiave può essere resa pubblica
senza compromettere la segretezza del messaggio o della chiave privata.
Questo metodo viene chiamato anche Crittografia a Chiave Asimmetrica.
La crittografia a chiave privata viene spesso usata per proteggere dati
memorizzati su hard disk o per codificare dati trasmessi su di una linea di
comunicazione tra due computer. La crittografia a chiave pubblica viene invece
preferita per creare firme digitali su dati, come documenti inviati per posta
elettronica, o per meccanismi di autenticazione, o ancora per controllare l'integrità
dei dati trasmessi su di una linea non sicura.
Poiché la crittografia a chiave pubblica è molto più lenta della crittografia a
chiave privata, molti dei programmi più utilizzati oggi (come ad esempio PGP)
usano un sistema ibrido Pubblico/Privato. In questi sistemi la crittografia
asimmetrica viene usata per lo scambio di una chiave di sessione, che a sua volta
viene poi usata per la comunicazione con crittografia simmetrica. (la chiave di
sessione viene usata solo per la singola sessione e poi scartata)
2.1.3 Algoritmi per la Crittografia a Chiave Privata.
Esamineremo ora i principali algoritmi per la crittografia a chiave privata,
analizzando le funzioni matematiche su cui sono basati, le procedure di utilizzo, le
caratteristiche di robustezza e gli attacchi a cui sono stati sottoposti.
2.1.3.1 DES (Data Encryption Standard).
Il DES è il sistema di codifica simmetrico più largamente usato oggi. E' stato
sviluppato dall'IBM negli anni settanta ed è stato poi adottato dal National Bureau
of Standards (oggi National Institute of Standards and Technology, o NIST) nel
1977. Oggi il DES è diffusissimo: secondo dati della Trusted Informations
Systems ..............
27
2.2.4 Sistemi biometrici.
I sistemi biometrici possono essere definiti come metodi automatici per il
riconoscimento e la verifica dell'identità di un essere vivente, basati su
caratteristiche fisiologiche o comportamentali uniche e misurabili [37] [39]. E'
importante notare la presenza in questa definizione del termine "automatici" ;
questo significa essenzialmente che le tecnologie biometriche devono riconoscere
una caratteristica umana facilmente ed automaticamente, in tempo reale.
Esempi di caratteristiche fisiologiche umane utilizzabili per il riconoscimento
biometrico sono le impronte digitali, il viso, la voce, gli occhi (iride e retina),
mentre una caratteristica comportamentale può essere la firma autografa.
Tutti i sistemi biometrici funzionano in modo simile. Una procedura di
autenticazione biometrica è costituita dalle seguenti quattro fasi:
1) Acquisizione. Il sistema acquisisce uno o più campioni fisici o
comportamentali dell'utente.
2) Estrazione. Vengono estratte le caratteristiche uniche del campione e
convertite dal sistema in un codice matematico. I dati così ottenuti vengono
memorizzati come profilo di riferimento dell'utente. La memorizzazione può
avvenire nel sistema biometrico stesso, o in un database su di un computer, o
in una smart card.
3) Confronto. Ogni volta che viene presentato un nuovo campione biometrico da
parte dell'utente, esso viene confrontato con il corrispondente campione
memorizzato.
4) Decisione. Il sistema decide se il nuovo campione biometrico introdotto è
uguale a quello memorizzato: se corrisponde, l'utente è colui che dice di
essere, se non corrisponde, si tratta di un impostore.
Tutti i sistemi biometrici utilizzano questi quattro stadi, ma usano tecniche e
metodi differenti per accordarli col fattore umano. Il cuore di un sistema
biometrico è costituito dal motore software che elabora i dati biometrici durante
tutte le quattro fasi.
La procedura di funzionamento di un sistema biometrico è illustrata in fig.2.18
86
Fig. 2.18. Procedura di funzionamento di un sistema biometrico
I sistemi biometrici possono essere usati per i seguenti due scopi:
• Identificazione. In questo caso il sistema identifica la persona, confrontando i
dati biometrici presentati al momento con quelli contenuti in un data base di
persone che hanno fornito in precedenza i loro dati biometrici (confronto "uno
a molti"). E' questo il sistema usato soprattutto dagli organi di polizia, ed è
usato anche in quei casi in cui un numero limitato di persone può accedere ad
aree od informazioni riservate. Questo tipo di applicazioni non è oggetto di
questa trattazione.
• Autenticazione. Le informazioni biometriche di una persona che dichiara la
sua identità vengono lette da un dispositivo, che le confronta (confronto uno a
uno) con le informazioni contenute, ad es., in una smart card che lo stesso
utente ha in precedenza "personalizzato".
87
Fig. 2.19 Procedure di autenticazione ed identificazione
2.2.4.1 Accuratezza dei sistemi biometrici.
Il fatto che i sistemi biometrici siano basati su caratteristiche intrinseche
dell'essere umano li rende sicuramente molto interessanti per un utilizzo in un
sistema di sicurezza. Tutto può essere copiato, falsificato, rubato, tranne che
l'unicità fisiologica e psicologica di un essere umano; in altre parole, "la tua
password sei tu".
Il problema fondamentale dei sistemi biometrici consiste nel fatto che non
garantiscono un'accuratezza del 100%. L'essere umano non è costituito da un
insieme di dati consistenti: l'uomo non è sempre uguale a sé stesso, e i suoi dati
biometrici possono lievemente variare, anche da un giorno all'altro, a causa di
fattori esterni come stress, stato di salute generale, condizioni lavorative ed
ambientali. I sistemi biometrici devono perciò tenere conto di queste piccole
variazioni e devono essere in grado di poter riconoscere correttamente un utente
anche se il campione biometrico presentato non è uguale in tutto e per tutto al
modello di riferimento memorizzato. Per far questo viene calcolato un punteggio
di accuratezza per ogni campione e viene fissata una fascia di tolleranza entro la
quale il sistema riconosce il campione biometrico come appartenente al legittimo
utente. Questo conferisce ai sistemi biometrici una notevole flessibilità, che però
in alcuni casi può non essere sempre un vantaggio. Per capire meglio questo
problema occorre prendere in esame gli indicatori che le industrie produttrici di
dispositivi biometrici utilizzano per misurare il livello di accuratezza: si tratta di
FRR e FAR.
88
2.6 IDENTIFICAZIONE E DIFESA DALLE INTRUSIONI NEL SISTEMA.
Per intrusione si intende l'azione di una persona che cerca di penetrare in un
sistema informatico allo scopo di prelevare informazioni riservate, o di utilizzare
in maniera impropria risorse del sistema. Gli intrusi possono essere classificati in
due categorie:
§ Esterni: intrusi che cercano di penetrare nella rete dall'esterno, tipicamente da
Internet, eludendo le difese della rete.
§ Interni: utenti interni al sistema, che non hanno un accesso completo a tutte
le aree del sistema, e che cercano comunque di accedervi.
Come già detto in altre occasioni, il pericolo maggiore per le reti aziendali non
proviene dall'esterno, ma dall'interno. Di seguito si cercherà di tracciare una breve
descrizione delle principali tipologie di attacco e delle relative contromisure.
2.6.1 Principali tipi di attacco e relative contromisure.
Gli intrusi possono attaccare i sistemi in vari modi, con tecniche più o meno
elaborate e diversificate a seconda della piattaforma oggetto dell'attacco. Gli
hacker inoltre sfruttano spesso bug del software di sistema e debolezze nella
configurazione, con attacchi in alcuni casi personalizzati per quel particolare
sistema. Risulta quindi praticamente impossibile (e forse anche inutile, data la
estrema dinamicità del progresso nelle tecniche di hacking) descrivere tutte le
varie tecniche di attacco, ma può essere utile individuare le tecniche di attacco più
comuni e più diffuse, allo scopo di individuarne anche le relative contromisure.
I tipi di attacco ad un sistema interconnesso considerati più comuni sono i
seguenti:
• Attacco con previsione del numero di sequenza.
• Dirottamento TCP/IP
• IP Spoofing
• Syn Flooding.
Nell'illustrare le caratteristiche di questi attacchi viene data per scontata la
conoscenza dei principi base del protocollo TCP/IP.
2.6.1.1 Attacco con previsione del numero di sequenza.
Ogni computer in una rete ha un proprio indirizzo IP (che può essere univoco nel
caso di indirizzo statico, e variabile nel caso di indirizzamento dinamico). Nel
112
momento in cui si stabilisce una connessione tra client e server, il protocollo
TCP/IP prevede che ognuno dei due interlocutori alleghi ad ogni pacchetto
trasmesso l'indirizzo IP di origine e di destinazione e un numero univoco, il
numero di sequenza, che identifica il primo byte di dati nell'area dati del segmento
TCP, consentendo così a client e server di sincronizzare il flusso di dati durante la
comunicazione. In ogni pacchetto sono presenti diverse altre informazioni, ma la
loro funzione non è interessante ai fini di questo argomento, e non le
considereremo. All'interno di una connessione TCP, il computer ricevente accetta
solo pacchetti con indirizzo IP e numero di sequenza corretti; inoltre, dispositivi di
sicurezza come i firewall consentono le trasmissioni in rete solo da e verso
computer con determinati indirizzi IP.
L'attacco a previsione del numero di sequenza è costituito da due fasi:
nella prima fase l'hacker cerca di determinare l'indirizzo IP del server (o del router
o del firewall che dir si voglia), generalmente mettendosi in ascolto dei pacchetti
in uscita, provando a specificare in ordine vari numeri di indirizzo, oppure
connettendosi al sito mediante un browser Web e osservando l'indirizzo IP nella
barra di stato. Mediante un semplice programma è possibile tradurre l'indirizzo
letterale (la URL) in indirizzo numerico (indirizzo IP). Poiché gli altri computer
della rete oggetto dell'attacco condividono parte degli indirizzi IP col router,
l'hacker cercherà di simulare un indirizzo IP che gli consenta di attraversare il
router e di accedere al sistema come se fosse un utente interno.
A questo punto, per chiarezza, occorre aprire una breve parentesi sulla divisione
in classi degli indirizzi IP. Com'è noto, il protocollo IP utilizza per
l'indirizzamento degli host presenti in rete quattro byte, cioè 32 bit. L'indirizzo
effettivo è però suddiviso in due parti: la prima identifica la rete, la seconda
identifica il singolo host appartenente alla rete. Gli indirizzi IP sono divisi in
classi a seconda della dimensione della rete: la classe A utilizza un byte per
individuare la rete e tre byte per individuare l'host interno alla rete; la classe B
utilizza due byte per la rete e due byte per gli host interni, e così via. In questo
modo viene fissato il numero massimo di reti per ogni classe e il numero massimo
di host per ogni rete. Ogni organizzazione rientrerà nella classe più adeguata alle
sue dimensioni. La tabella seguente fornisce uno schema riassuntivo della
divisione in classi.
113
Classe di Daa Max. diMax. di host
indirizziretiinterni alla rete
A1 . x . x .x126.x. x . x12616.387.064
B128.1. x . x191. 254. x. x1625664.516
C192.1.1. x223.254.254.x2.064.512254
D224 . x . x . x239 . x . x . x.
Ora è facile intuire che l'hacker, una volta conosciuto l'indirizzo del router, avrà il
compito facilitato nell'indovinare l'indirizzo di un computer interno alla rete. Ad
esempio, se un router ha l'indirizzo 192.1.1.15, esso appartiene alla classe C, e
l'hacker dovrà provare a indovinare uno dei 254 indirizzi degli host interni a
questa rete, semplicemente variando l'ultimo byte dell'indirizzo del router.
Dopo aver trovato alcuni indirizzi interni alla rete, l'hacker inizierà a controllare i
numeri di sequenza dei pacchetti trasmessi da questi computer, cercando di
prevedere il prossimo numero di sequenza generato dal server, inserendosi tra
client e server ; una volta indovinato anche questo numero di sequenza, l'intruso
avrà libero accesso alle informazioni inviate al server dagli host del sistema,
inclusi password, nomi di login e tutte le informazioni che viaggiano in rete.
La miglior contromisura contro questo tipo di attacco è un uso corretto ed
efficiente degli audit trail: infatti gli audit trail tengono traccia dei tentativi
dell'hacker di attraversare il router e il firewall per connettersi al server. Una
forma automatica di difesa può prevedere la notifica di un avviso
all'amministratore di sistema dopo un certo numero di accessi negati.
2.6.1.2 Dirottamento del protocollo TCP.
Il dirottamento TCP (TCP Hijack) è noto anche con il nome di sniffing attivo.
Anche se la previsione del numero di sequenza e il dirottamento TCP presentano
alcune analogie, nel secondo caso l'hacker ottiene l'accesso alla rete costringendo
la rete ad accettare il suo indirizzo IP come se fosse un indirizzo fidato e dunque
l'attaccante non è costretto a provare vari indirizzi IP fino a trovare quello giusto.
L'idea alla base del dirottamento TCP è che l'hacker acquisisce il controllo di un
computer che si collega con la rete che rappresenta il suo obiettivo. Poi
disconnette il computer dalla rete e inganna il server sostituendosi a tale computer.
Per potersi inserire tra client e server, l'hacker usa delle tecniche di
desincronizzazione che interrompono la sessione, e gli consentono di inserirsi
come utente fidato del server. Questo tipo di attacco è molto pericoloso perché
fornisce all'intruso molti più diritti di accesso rispetto agli altri tipi di attacco. Per
rilevare questo tipo di attacco ..............
114