2.1 Cos’è l’autenticazione
Definizione di autenticazione
L'autenticazione è
il processo attraverso il quale viene verificata l'identità di un utente che
vuole accedere ad un computer o ad una una rete. E’ il sistema che verifica,
effettivamente, che un individuo è chi sostiene di essere. L'autenticazione è
diversa dall'identificazione (la determinazione che un individuo sia conosciuto
o meno dal sistema) e dall'autorizzazione (il conferimento ad un utente del
diritto ad accedere a specifiche risorse del sistema, sulla base della sua
identità).
Chi è l'utente che richiede una connessione?
A quali parti della rete e dei dati aziendali può
lecitamente accedere?
E soprattutto come essere sicuri dell'identità di chi
accede a un sistema?
Queste sono le domande fondamentali a cui un qualsiasi sistema di sicurezza, per essere efficace, deve poter rispondere. Un lavoro essenziale affinché un utente possa accedere ad un sistema informativo, ad una rete o a qualsiasi altra risorsa protetta. Si potrebbe pensare che tutto questo costituisca un classico compito da affidare alle solite diffuse password, ma in realtà queste ultime sono soltanto una piccola componente, da sola non sufficiente, di un sistema di sicurezza che possa definirsi davvero efficace.
Un buon processo di autenticazione ricorre normalmente ai
seguenti tre fattori:
1. Qualcosa che solo l'utente conosce, come una frase, un numero o un fatto
(per esempio, il nome della madre prima del matrimonio).
2. Qualcosa che solo l'utente possiede, come una chiave, una scheda magnetica,
un dispositivo di autenticazione, che generano una password unica e
irripetibile, o una particolare risposta al quesito posto dal server.
3. Qualcosa che solo l'utente è, e che normalmente dipende da una qualche
caratteristica fisica peculiare. Questa tecnica rientra sotto il nome di
biometria, e gli esempi più significativi di utilizzo di questo tipo di
autenticazione comprendono il riconoscimento delle impronte digitali, la
struttura dell'iride oculare, la forma della mano, il riconoscimento del timbro
della voce, il riconoscimento facciale, il modo in cui l'utente digita sulla
tastiera o il modo in cui l'utente firma (la velocità, la pressione della mano
e lo stile di scrittura).
Questi fattori di autenticazione sono stati elencati, in base al livello di difficoltà che è necessario affrontare a per aggirarli. Ognuno di questi metodi offre un determinato grado di sicurezza, ma ognuno presenta anche i propri problemi e le proprie debolezze.
Quello che un utente
conosce: le password
La password è l'insieme di caratteri alfanumerici, di lunghezza variabile, che immessa in un sistema permette l'accesso alla persona che la possiede. La sicurezza in questo sistema di identificazione può essere compromessa per due motivi:
Per ovviare al primo problema le soluzioni sono semplici ed elementari, le password devono essere tenute nascoste, non scritte su fogli o database di facile accesso, inoltre occorre evitare l'impiego di personal computer che permettano la memorizzazione delle password e degli identificativi immessi o almeno dove possibile non permettere la registrazione della password. Inoltre per evitare di essere trafugate durante la trasmissione spesso vengono criptate.
Per definizione nessuna password é sicura al 100%, ma la sua decodifica è solo questione di tempo. Un' adeguata politica di gestione delle passwords (rinnovi, ripetibilità, lunghezza, caratteri utilizzabili) può contribuire a far crescere i tempi necessari ad un hacker che voglia impadronirsi del diritto di accedere a un sito.
Un
discorso a parte va dedicato alle password dinamiche. Sono queste, una
tipologia di password composta da una porzione alfanumerica fissa (ma comunque
sempre rinnovabile), e una porzione alfanumerica, o più spesso solo numerica,
che cambia automaticamente ad ogni intervallo di tempo prefissato (in genere
ogni minuto). Un esempio di questo sistema è fornito dalla RSA, leader nel settore della
crittografia e della sicurezza nell'identificazione. Questo sistema si basa su
una duplice componente, una hardware e una software. La parte software è un
programma chiamato "Agent" che risiede in esecuzione sul server che
deve essere protetto; anche su un server web. Questo sistema si occupa di
integrare le password statiche con la loro componente dinamica. Una seconda
parte software è il "Server" che si occupa di generare le password
dinamiche ogni minuto, e le comunica all'Agent. La parte hardware è il
cosiddetto "Token" (vedi fig.), un piccolo strumento delle dimensioni
di un portachiavi che, sincronizzato con il server, genera ogni minuto (o altro
intervallo di tempo) la componente dinamica della password secondo lo stesso
algoritmo residente sul server. Esistono anche in questo caso soluzioni per
gestire la fault tolerance, ossia per fornire accesso autenticato anche in caso
di mancata perfetta sincronizzazione temporale dei 2 dispositivi, pur
garantendo l'autenticazione.
Quello che un utente
possiede: i dispositivi hardware
Chiave
hardware.. Una chiave hardware non è altro che
un contenitore di login/password che deve essere mantenuto sicuro
dall'utilizzatore stesso. E' un oggetto dotato di memoria integrata al suo
interno, la cui capienza varia da modello a modello. In questa memoria é
possibile scrivere dati quali passwords, firme digitali, codici e quant'altro.
La sicurezza della chiave hardware si basa molto sull'affidabilità del padrone
della chiave stessa. Se la persona i cui dati di identificazione sono su una
chiave, la lascia incustodita, allora la sicurezza può essere facilmente compromessa,
altrimenti il grado di sicurezza di una chiave hardware è senz'altro superiore
alla password testuale. Studi hanno dimostrato la facilità con cui è possibile
"manomettere" una chiave USB, leggendone il contenuto della memoria,
scrivendo nella memoria stessa e in questo modo replicando la chiave.
Ovviamente è una procedura che richiede specifiche competenze in campo
elettronico e la disponibilità di strumenti adeguati. Ciononostante le
competenze richieste e gli strumenti necessari sono facilmente reperibili, e un
buon elettrotecnico è facilmente in grado di svolgere queste procedure.
Smart card. Questo argomento è stato ampiamente
trattato nel capitolo precedente.
Proximity tools. Una
menzione va dedicata anche ai dispositivi di autenticazione che sfruttano i
segnali in radiofrequenza. Tramite un' apposita interfaccia da collegare al
computer questi sistemi vanno a leggere il contenuto della memoria di un
apposito strumento in possesso della persona che si deve autenticare. La
procedura di autenticazione può riguardare l'accesso locale a un PC (logon alla
macchina fisica) oppure anche a un sito Internet. In questo caso se il canale
di comunicazione è sicuro, la procedura di autenticazione può essere svolta in
maniera efficiente. E' da poco stato introdotto sul mercato un nuovo orologio
che sfrutta proprio questo principio (vedi fig). Nella memoria dell'apparecchio
vengono memorizzati i dati necessari alla procedura di autenticazione, e questi
vengono passati al computer tramite un' interfaccia simile a un mouse-pad
collegato tramite porta USB al computer. L'invio di dati al server remoto viene
gestito da un' applicazione dedicata, che gestisce le chiamate alla periferica
di ricezione e instrada le informazioni ricevute al server remoto, o alla macchina
locale.
Quello che un utente
è: i dispositivi biometrici
Un sistema biometrico è un sistema di riconoscimento
che stabilisce l'autenticità di una caratteristica fisiologica o del
comportamento di un utente. Una delle tecnologie biometriche più anziane e più
note è quella che si occupa del riconoscimento dell'impronta digitale. I
sistemi automatici di identificazione sono disponibili in commercio dall'inizio
degli anni 60. La tecnologia biometrica ora si è trasformata in un'alternativa
possibile ai sistemi tradizionali di identificazione in molti settori. In
aggiunta alle tecnologie di riconoscimento dell'impronta digitale, altre
tecnologie biometriche stanno cominciando ad emergere. Esse includono il
riconoscimento del viso, (sia ottico che infrarosso), della mano, dell'iride,
della retina, della firma ed il riconoscimento della voce.
Considerazioni
Dopo aver introdotto il concetto di autenticazione e dopo averne descritto i dispositivi utilizzati, facciamo delle brevi considerazioni su alcuni aspetti (accuratezza, costi, invasività) che possono essere utili nella scelta di un dispositivo di autenticazione rispetto ad un altro.
Accuratezza
Mentre un sistema basato su password testuali garantisce il massimo dell'efficienza nell'autenticazione se si fornisce la password esatta, un sistema biometrico può essere meno accurato; questo può accadere a causa di problemi del sensore, particolari condizioni di illuminazione non ottimali o altre situazioni ambientali. All'estremo questa situazione rischia di far avere accesso a una persona che non e' autorizzata. Ci troviamo qui nella fattispecie degli errori di tipo "False Positive", ossia quando un soggetto non autorizzato viene riconosciuto come autorizzato. Un secondo tipo di fattispecie di errore è quello dei "False Negative" ossia quando il sistema non autentica un soggetto in realtà autorizzato. Nell'analisi sull'opportunità di utilizzo di queste tecnologie, è importante valutare il trade off tra affidabilità e prestazioni del sistema alla luce dei costi delle diverse soluzioni.
Costi
Maggiore è l'affidabilità del sistema e maggiori sono i costi richiesti per l'acquisto dei sensori necessari al riconoscimento. Inoltre per quelle specifiche applicazioni nelle quali non è possibile far ricorso a dispositivi di grandi dimensioni (computer portatili, ad esempio) tanto maggiore è la miniaturizzazione del dispositivo e maggiori saranno i costi per l'acquisto del dispositivo stesso. Infine, quando si deve prendere in considerazione l'utilizzo di un sistema biometrico, è importante considerarne l'invasività.
Invasività
Spesso la lettura di parametri biometrici da parte di una macchina richiede all'utente che si vuole autenticare, comportamenti che possono essere considerati invasivi. L'esempio tipico in questi casi è il bancomat. Difficilmente i clienti di una banca accetterebbero un sistema di bancomat che richieda loro di avvicinare un occhio a uno scansore di retina o di iride. Un bancomat di questo tipo difficilmente potrebbe avere successo.
Identificazione e
verifica
L'identificazione è un processo di verifica 1-a-molti: confronta un' impronta biometrica con moltissime altre presenti in un database, al fine di stabilire un'identità. Un sistema di accesso all'ingresso di un'area riservata di un'azienda potrebbe usare questo sistema dove migliaia di impronte biometriche presenti in un database, vengono comparate con l'impronta della persona che cerca di accedere.
La verifica, al contrario, è un processo 1-a-1: confronta un'impronta biometrica a un'altra che è stata memorizzata, per esempio, su una smart card. Questo processo è molto più veloce dato che non serve fare ricerche complesse su DataBase.
2.2 Rischi delle tecnologie, attacchi più
comuni e trasmissione dati su reti
Quali sono i rischi
derivanti dall’utilizzo di queste tecnologie?
Le tecnologie di autenticazione, essendo gestite da macchine, non sono infallibili. Il rischio primario è che la macchina non sia in grado di distinguere tra soggetti autorizzati ad accedere ad una risorsa e soggetti non autorizzati. Quindi in questo caso ci troviamo di fronte ad una debolezza intrinseca del sistema. Per un computer, ciò che conta è che i dati che gli vengono passati durante il processo di autenticazione siano presenti nel suo database; che poi la persona che sta fornendo i dati alla macchina sia effettivamente la titolare del diritto, il computer non lo può sapere. Gli hackers giocano proprio su questo punto debole del sistema, ossia cercano di "farsi riconoscere" come persone autorizzate. Per fare questo, le tecniche utilizzate sono diverse e dipendono dal tipo di tecnologia di autenticazione che si vuole "sconfiggere".
Per quanto riguarda i sistemi basati su password testuali, basta "indovinare" la password da associare a un certo username e il gioco è fatto. Per fare questo gli hackers utilizzano sostanzialmente gli attacchi a dizionario e a forza bruta.
Nel caso di sistemi di autenticazione basati su chiavi usb o
smart card, l'hacker cercherà di entrare in possesso della chiave hardware onde
poterla duplicare.
Nel caso di sistemi biometrici,
l'hacker si troverà di fronte a problemi maggiori, in quanto i
parametri biometrici sono unici per
ogni persona. L'hacker allora cercherà di aggirare il sistema e di
impossessarsi del database che istruisce il sistema di riconoscimento di
parametri biometrici, onde poter "replicare" l'identità di uno o più
utenti.
Un altro tipo di attacco ad un sistema di autenticazione è il cosiddetto "man in the middle" che consiste nell'avviare un processo nascosto (troyan horse) sulla macchina che effettua l'autenticazione, al fine di informare l'hacker di quali sono le login e le password che vengono accettate dalla macchina per poi poter replicare le identità delle persone autorizzate. Ovviamente questo tipo di attacco è tra i più difficili da realizzare perché richiede che almeno una volta l'hacker sia riuscito a penetrare nella macchina per avviare il suo processo "man in the middle". Ciononostante è meno problematico di quanto possa sembrare dato che spesso i server di autenticazione (come il resto dei server) non sono adeguatamente protetti da attacchi esterni e permettono a utenti remoti di prenderne il controllo da remoto.
Quali sono i metodi
di attacco più comuni e come difendersi da essi?
I programmi password cracker sono di due tipi:
I programmi dictionary based provano tutte le parole predefinite in un dizionario e vedono se tra queste è presente la password dell'utente. Questi programmi sono più veloci rispetto ai brute force attack ma la riuscita dell'attacco dipende soprattutto dal numero di vocaboli presenti nel dizionario. L'esito di un attacco di questo tipo è negativo se le password dell'utente sono state create rispettando i consigli esposti precedentemente e soprattutto utilizzando password formate da numeri e simboli.
I programmi per effettuare il brute force attack, trovano tutte le combinazioni dei caratteri presenti in un determinato set di caratteri disponibili, rendendo molto interessante questi tipi di strumenti. La caratteristica negativa di questa tipologia di attacco è l'ingente quantitativo di tempo che viene speso per elaborare tutte le possibili combinazioni. Infatti se ipotizziamo una password lunga 8 caratteri e un set di caratteri di partenza, da cui elaborare le password, che comprenda le 26 lettere dell'alfabeto inglese e i dieci numeri, un hacker si troverebbe a dover tentare fino a un massimo di 852 combinazioni possibili (che tradotto in cifre fa 302.231.454.903.657.000.000.000 tentativi!). Quindi pur essendo estremamente efficaci sono meno efficienti dei dictionary based.
Quanto è sicura la
trasmissione di dati su reti protette da protocolli di codifica?
Quello che collega i due estremi è il canale di trasmissione, la cui sicurezza deve essere tale da garantire il fallimento di eventuali tentativi di sniffing (duplicazione delle informazioni in transito) dei pacchetti TCP in transito. Il protocollo di cifratura SSL (Secure Socket Layer) con chiave a 128 bit garantisce alti standard di sicurezza. SSL si basa su un sistema di crittografia a doppia chiave, implementato dai maggiori produttori di browser. Esso è diventato quasi uno standard per la protezione dei dati nelle transazioni sul web. Le caratteristiche che lo hanno portato a diventare così diffuso sono:
La potenza di calcolo necessaria per la decodifica dei pacchetti criptati "catturati" in rete, ovviamente è diversa e dipendente dalla tipologia di attaccante. La tabella che segue da un'idea dei tempi necessari per decodificare un segnale criptato con chiave di diverse lunghezze:
tipo di attaccante |
Chiave a 40 bit |
Chiave a |
Chiave a |
Chiave a |
Chiave a |
Hacker |
5 h. |
10.000 anni |
700 mil. anni |
700 mil anni |
1027 anni |
PMI |
2 sec. |
1 anno |
70.000 anni |
70.000 anni |
1019 anni |
Grande Impresa |
2 ms. |
9 gg. |
7000 anni |
7.000 anni |
1016 anni |
Intelligence Agency |
2 ms. |
13 sec. |
7 anni |
7 anni |
1015 anni |
2.3
Processo di autenticazione tramite smart card
Come avviene
I processi di autenticazione permettono
il riconoscimento, tra smart card e il mondo esterno, che è tipicamente
rappresentato dal terminale che interagisce con la carta. Lo standard ISO definisce tre tipi di
autenticazione: interna, esterna e reciproca. Tale suddivisione è definita in
base e chi effettivamente effettua la verifica dell’identità (il mondo esterno,
la carta o entrambi). Il principio
generale su cui si basa l'autenticazione è che, tra i due soggetti, vengono
scambiate quantità casuali, di validità temporanea (autenticazione dinamica),
che vengono crittografate, in modo simmetrico, con le stesse chiavi e con gli
stessi algoritmi. Vediamo ora, un esempio di autenticazione:
Il riconoscimento in rete per
la fruizione di servizi
Un utente vuole identifcarsi in rete, tramite una card, nei
confronti di un server applicativo che eroga servizi (es. Pubblica
Amministrazione Centrale). In questo
caso la soluzione che si è scelta è quella della Strong Authentication.
La Strong Authentication richiede
l’utilizzo di funzioni tipiche di una Public Key Infrastructure per cui, oltre
alle piattaforme standard per l’utilizzo delle smart card, è necessario
considerare cosa è normalmente disponibile sul mercato per interagire con una
PKI utilizzando le Smart Card come dispositivi di cifratura. La figura sottostante schematizza un esempio
di applicazione utente che interagisce con un’Infrastruttura a Chiave Pubblica.
E’ un approccio stratificato, che partendo dal livello più alto (Application),
scende verso livelli sempre più bassi, fino ad arrivare al dispositivo fisico
rappresentato dalla smart card.
Analizziamo, ora, in dettaglio i
vari strati rappresentati in figura:
Application
Rappresenta il livello più alto ed
è l’applicazione con cui l’utente interagisce.
Crypto Middleware ed API PKCS
#11
Le infrastrutture a Chiave
Pubblica mettono a disposizione dei Client, che operano su reti aperte,
apposite applicazioni (piattaforme) per gestire i servizi di
cifratura/decifratura.
Tali piattaforme, chiamate
generalmente Crypto Middleweare, svolgono le seguenti funzioni:
Queste piattaforme a loro volta,
poggiano su strati software, o API, che le isolano dai dispositivi di
cifratura, nel nostro caso smart card. Le API più diffuse sono le PKCS #11. Le
caratteristiche salienti di queste API sono:
Client smart card device
interface
Rappresenta il dispositivo con il
quale la smart card (posta al livello più basso) si interfaccia con il livello
superiore (PKCS #11).
In conclusione, possiamo notare
che, l’applicazione di autenticazione risiede in parte sulla Workstation che
interfaccia la smart card ed in parte sulla macchina che eroga il servizio per
cui l’autenticazione è richiesta.