Protezione degli account e delle password degli utenti In ambito locale (Sam) e di dominio basato su Active Directory Manuela Gaglianone, Manuela Micheli, Alessio Antonelli Principi base della sicurezza Gestire la sicurezza delle informazioni non è semplice. Per realizzare una buona gestione in questo senso occorre una buona combinazione di capacità di tipo tecnico, economico e personale. Le 10 leggi fondamentali della sicurezza Nel 2000 Scott Culp del Microsoft Security Respons ha pubblicato l’ articolo “The Ten Immutable Laws of Security Le dieci leggi della sicurezza 1) Se una persona poco affidabile può convincervi ad utilizzare il suo programma sul vostro computer, non si tratta più del vostro computer 2) Se una persona poco affidabile può alterare il sistema operativo del vostro computer, non si tratta più del vostro computer 3) Se una persona poco affidabile ha accesso fisico illimitato al vostro computer, non si tratta più del vostro computer 4) Se si consente a una persona poco affidabile di caricare programmi sul vostro sito web, non si tratta più del vostro sito web. 5) Le password deboli riducono notevolmente anche una protezione elevata (Anche se la progettazione di un sistema è completamente sicura, se gli utenti o gli amministratori non utilizzano password oppure utilizzano password predefinite o semplici, la protezione verrà resa inefficace una volta che un aggressore compromette la password) Le dieci leggi della sicurezza 6) Un computer è tanto sicuro quanto un amministratore è affidabile 7) I dati crittografati sono tanto sicuri quanto la chiave di decrittazione (Nessun algoritmo crittografico proteggerà il testo cifrato da un aggressore se questo possiede o può entrare in possesso della chiave di decrittazione. La crittografia da sola non è una soluzione al problema, a meno che esista un forte componente di gestione delle chiavi e gli utenti e amministratori siano attenti nel proteggere le loro chiavi o il materiale correlato) 8) Un programma antivirus non aggiornato è appena meglio di nessun programma antivirus 9) L’anonimato assoluto non è pratico, sia nella vita reale che nel web 10) La tecnologia non è una panacea Il problema dell’ autenticazione Il primo obbiettivo: riconoscere l’utente L’ account come unità centrale di protezione del computer basato su windows nt, windows 2000 e windows xp Le autorizzazioni, le credenziali e le possibilità di accesso ad una risorsa, sia essa locale o di rete vengono definite dalle credenziali associate a quell’ account, la somma di queste autorizzazioni e diritti definisce le operazioni che un utente può effettuare sulle risorse condivise. Il problema dell’ autenticazione Gli account utente possono avere ambito locale o di dominio. In ambito locale gli account sono memorizzati in database S.A.M. (Security Account Manager) individuali sulle unità disco rigido delle workstation In ambito di dominio gli account sono memorizzati nel servizio Active Directory dei controller di dominio (Server Primario) Il processo di riconoscimento e autenticazione è differente nei due casi. Tale processo ha lo stesso fine: affidare le giuste credenziali all’ operatore che si sta autenticando Il problema della complessità La complessità di una password è di vitale importanza alla protezione dell’ account Password semplici sono vulnerabili sia ad attacchi brute force sia ad attacchi vocabolario La potenza dei calcolatori aumentando mette a rischio la robustezza della password e la espone ad attachi di forza bruta Una buona password deve soddisfare i requisiti di lunghezza (almeno 8 caratteri per i computer client o fuori rete e 12 caratteri per i controller di dominio) Non di senso compiuto ( un attacco vocabolario la renderebbe praticamente nulla) Alfanumerica (per aumentare il pool delle combinazioni) Contenente caratteri speciali ( come sopra ) Descrizione degli identificatori di protezione Mentre gli utenti identificano gli account con nome utente e password il sistema operativo li identifica attraverso gli identificatori di protezione S.I.D. Per gli account di dominio, il S.I.D. di una identità di protezione è creato concatenando il S.I.D. del dominio con un identificativo relativo dell’ account (R.I.D.) I S.I.D. sono univoci nel loro ambito (dominio o locale) e non possono essere riutilizzati. Esempio di S.I.D. S-1-5-21-833815213-1531848612-156796815-1105 I S.I.D. contengono diversi componenti: Revisione: La versione del sistema operativo (1 nell’esempio NT/2000/XP) Autorità identificatore: Il più alto livello di autorità che può rilasciare S.I.D. Sottoautorità: o identificativo di dominio (3 gruppi di 9 caratteri) Il R.I.D.: Che identifica l’ appartenenza dell’ utente al gruppo di protezione: Administrator, Power User, Guest, Domain User, . . . . . (1105 nell’esempio) Descrizione dei token di accesso Ogni volta che un utente richiede l’ autenticazione viene creato un token di accesso Il token è utilizzato dal computer per detrminare se l’ utente dispone o meno dell’ autorità appropriata per accedere a informazioni o per eseguire un azione o operazione Il token contiene le seguenti informazioni: S.I.D. account, S.I.D. di gruppo, Diritti, Proprietario, Gruppo Primario, Origine, Tipo, Livello di rappresentazione, Statistiche, S.I.D. con restrizioni, ID sessione. Descrizione della sequenza di autenticazione Definizione dell’ L.S.A. LSA (Local Security Authority, ovvero Autorità di Sicurezza Locale). E` conosciuto anche con il nome di Security Subsystem (Sottosistema di Sicurezza). E` il componente centrale della sicurezza NT ed è preposto all'autenticazione degli utenti e all'audit (login). Interazione con il database S.A.M. (Security Account Manager, ovvero Manager di Sicurezza degli Account) Fornisce autenticazione al LSA e controlla gli account per gruppi e utenti. L'autenticazione degli utenti funziona nel modo seguente: l'utente effettua il login, NT crea un token che rappresenta quell'utente e associa al token i privilegi che gli competono, e agisce in base ad essi. La sequenza di autenticazione avviene utilizzando diversi protocolli tra cui: Lan Manager, NT Lan Manager (NTLM), NTLMv2 Hash: valore numerico che rappresenta la password crittografata, si trova nel S.A.M o in Active Directory. Lan Manager L’autenticazione Lan Manager è implementata in Windows NT, Windows 2000 Windows XP per supportare applicazioni precedenti. Le password LM sono limitate a 14 caratteri. Con LM, le password stesse non sono memorizzate dal sistema operativo ma crittografate con la funzione OWF (One Way Function) di Lan Manager. Archiviazione della password: Questa funzione è formata convertendo la password in caratteri maiuscoli, dividendo la password di 14 caratteri in due metà di 7 caratteri, aggiungendo caratteri di riempimento a password con meno di 14 caratteri e crittografando una costante con le due metà di caratteri utilizzando l’ algoritmo di crittografia DES. Lan Manager Lan Manager L’autenticazione di una password con il protocollo LM viene eseguita utilizzando un semplice meccanismo challenge / responce (sfida – risposta) del controller di dominio o del computer di autenticazione locale. Ciò che viene usato per autenticarsi è l’hash e non la password vera e propria In figura viene mostrato il processo di autenticazione di un account utilizzando LM Lan Manager Nella figura è illustrato come il client invia una richiesta di autenticazione al server di accesso. Questo restituisce un challenge costituito da un numero casuale, o nonce. Il client utilizza l’ hash di password LM per crittografare il nonce utilizzando l’algoritmo di crittografia DES. Quindi il server decifra il nonce crittografato dal client utilizzando la password LM che è stata memorizzata nel Database degli account ( oppure nel S.A.M. in caso di accesso locale). Se il nonce corrisponde al nonce inviato al client, le credenziali del client verranno convalidate. Riducendo il pool di tasti per le lettere in modo da includere solo lettere maiuscole, limitando le password a 14 caratteri e separandole in due metà, si rendono gli hash particolarmente vulnerabili ad attacchi a forza bruta e di dizionario. NT Lan Manager NT Lan Manager noto anche come NTLM, era inizialmente fornito con Windows NT ed è un miglioramento del protocollo di autenticazione LM. A differenza delle password LM, le password NTLM sono basate sul set di caratteri UNICODE, supportano il riconoscimento delle maiuscole e possono avere una lunghezza massima di 128 caratteri. Come per LM, il sistema operativo non memorizza di fatto la password ma una sua rappresentazione utilizzando la funzione OWF di NTLM. La funzione suddetta è ottenuta utilizzando la funzione hash MD4 che calcola un hash di 16 byte o digest di una stringa di testo di lunghezza variabile ( nel nostro caso la password dell’utente ) Un’ altra differenza tra NTLM e LM è che la password NTLM non sono suddivise in parti più piccole prima che venga calcolato l’algoritmo di hash. NTLM utilizza lo stesso processo challenge / response di autenticazione utilizzato da LM. NT Lan Manager MD 4 E’ considerato basilare per le funzioni hash: Il messaggio è diviso in blocchi da 512 bit Funzione di compressione sui blocchi Si genera il valore hash L’output ha lunghezza di 128 bit Hans Dobbertin sviluppò un attacco in grado di generare collisioni in circa un minuto di tempo di calcolo su un normale pc. MD 4 Vantaggi: Semplicità e compattezza Descriverlo non richiede molte linee di codice Sicurezza: Un attacco forza bruta è computazionalmente impraticabile Velocità: Si basa su semplici operazioni su parole di 32 bit Nel 1994 è stato perfezionato con MD 5 meno simmetrico e più sicuro ma anche meno veloce NT Lan Manager v2 NTLMv2 la seconda versione del protocollo NTLM segue le stesse regole di password della precedente versione, tuttavia questa utilizza un processo leggermente diverso per calcolare l’ hash di password e un diverso processo di autenticazione. NTLMv2 richiede inoltre che la differenza tra gli orologi del client e dei server sia inferiore a 30 minuti. NTLMv2 utilizza un keyspace per tasti derivati da una password di 128 bit criptata con la System Key. Questo rende difficili gli attacchi a forza bruta. Se client e server supportano NTLMv2, verrà negoziata una protezione di sessione avanzata. Questa operazione separa le chiavi in base a integrità e riservatezza di un messaggio, fornisce input di client nel challenge per evitare attacchi a testo in chiaro. Kerberos v.5 Kerberos è il componente chiave del modello di sicurezza di Windows 2000 Server,Windows 2000 e Windows XP che sostituisce NTLM come protocollo alla base del sistema di autenticazione. Cenni storici: Nella mitologia greca Cerbero era il cane a tre teste che difendeva l’ Ade. Il software Kerberos è stato sviluppato nel corso del progetto Athena condotto presso il M.I.T. (Massachussets Institute of Technology) negli anni ’80. Si tratta di un metodo che permette di verificare l’ identità di un utente utilizzando diverse chiavi di codifica Kerberos è composto da diverse componenti tra cui le fondamentali per l’autenticazione tra client e controller di dominio Active Directory: Centro distribuzione chiavi (KDC, Key Distribution Center) Ticket di concessione Ticket (TGT) Ticket di servizio Ticket di riferimento Client / Server Authentication Exchange Kerberos v.5 Struttura dell’ autenticazione Client / Server L’ utente inserisce nome utente password e dominio di accesso nella finestra di dialogo di Windows XP o 2k Il client individua un KDC interrogando un server DNS sulla rete Il client invia un pacchetto Kerberos Authentication Request (KRB_AS_REQ) al controller di dominio. In questa fase le informazioni dell’ account utente vengono crittografate usando la chiave a lungo termine presente nel client e nel KDC Per finire, il servizio di autenticazione KDC autentica l’utente e genera un TGT che restituisce all’ utente stesso in un messaggio di tipo Kerberos Autentication Service Response (KRB_AS_REP). Quando un utente si autentica vengono scambiati una serie di pacchetti che completano la convalida delle credenziali. Kerberos v.5 Questa sequenza fornisce all’ utente un TGT corretto, ma se, come nel nostro caso, il client utilizza un sistema Win 2K o Win Xp allora questo ticket non è sufficiente. Si dovrà ottenere un Ticket per il computer locale: 1) L’ utente invia un messaggio Ticket-Granting Service Request (KRB_TGS_REQ) al KDC per ottenere un ticket di servizio per il computer di destinazione. Tale messaggio include il TGT e un autenticatore. Il servizio di concessione ticket del KDC controlla l’autenticatore e il TGT, quindi genera un nuovo ticket di servizio che restituisce all’ utente per mezzo di un messaggio Kerberos Ticket-Granting Service Response (KRB_TGS_REP). Il ticket di servizio è crittografato utilizzando la chiave a lungo termine del servizio di destinazione, nota solo al KDC e al servizio di destinazione. L’utente invia il ticket di servizio ricevuto e un autenticatore al server di destinazione utilizzando un messaggio Kerberos Application Request (KRB_AP_REQ) Kerberos v.5 Il server di destinazione verifica il ticket con l’autenticatore, decrittografa la chiave di sessione utilizzando la chiave principale condivisa con il KDC e restituisce un autenticatore in un messaggio Kerberos Application Response (KRB_AP_REP). Questa sequenza, infine autentica del tutto il client fornendo una applicazione di reciproca “fiducia” tra client e server. Archiviazione in locale “LSA” Oltre a memorizzare, come visto, password in database SAM o Active Directory in controller di dominio, Win NT/2K/XP memorizzano le chiavi di accesso in altri percorsi e altre regioni. L’autorità di protezione locale (LSA) gestisce le informazioni riguardanti tutti gli aspetti della protezione del sistema operativo locale. L’ LSA esegue tra le altre cose le seguenti operazioni: Autenticazione degli utenti locali Gestione dei criteri di protezione locali Generazione dei token di accesso Inoltre LSA memorizza informazioni utilizzate in maniera segreta dal sitema operativo, note come segreti LSA. I segreti LSA includono password di relazioni trust, nomi utente, password e nomi account e password di servizi eseguiti utilizzando un contesto di account utente. I segreti LSA possono essere rivelati localmente da account con diritti utente Debug Programs. Di conseguenza è necessario prestare attenzione alle informazioni memorizzate dalle applicazioni come segreti LSA. Aggressori che manomettono fisicamente il computer possono facilmente ottenere l’ accesso alle informazioni memorizzate come segreti LSA se non sono adottate altre precauzioni, come l’utilizzo della chiave di sistema (SysKey.exe). Archiviazione in locale “LSA” L’ utilità Chiave di sistema era inizialmente disponibile in Windows NT. E’ possibile configurare l’utilità Chiave di sistema digitando Syskey.exe al prompt dei comandi. Solo i membri del gruppo Administrators possono eseguire Syskey.exe per inizializzare o modificare la chiave di sistema. Questa è la “ chiave principale ”utilizzata per proteggere la chiave di crittografia password; pertanto, la protezione della chiave di sistema è un operazione di protezione del sistema fondamentale. Sono disponibili tre opzioni per gestire la chiave di sistema: Livello 1 Utilizza una chiave di sistema casuale generata dalla macchina e la memorizza nel sistema locale. Per impostazione di default questa purtroppo è la configurazione che tutti i sistemi windows xp o 2000 utilizzano. Livello 2 Utilizza una chiave casuale generata dalla macchina e la memorizza su un disco floppy. Per consentire agli utenti di connettersi il sistema deve essere avviato con il disco floppy contenente la chiave di sistema. Livello 3 Utilizza una password scelta dall’ amministratore per derivare la chiave di sistema. Durante la fase iniziale della sequenza di avvio viene visualizzata una finestra di dialogo in cui viene chiesto di inserire la password della chiave di sistema prima che gli utenti possano connettersi. Utilizzo della chiave di sistema La password Chiave di sistema non è memorizzata nel sistema. Un hash MD5 della password è invece utilizzato come chiave principale per proteggere la chiave di crittografia password. Se si dimentica la password il sistema non potrà essere avviato. Come rendere sicuro l’accesso ad un sistema di tipo 2 oppure 3 ? La risposta è posta nella biometria. Un disco floppy si può distruggere o deteriorare oppure una password dimenticare i sistemi biometrici impediscono questi inconvenienti rendendo sicuro l’accesso al sistema. Tra i metodi di autenticazione biometrica troviamo: Il fingerprint (riconoscimento delle impronte digitali), Il riconoscimento della geometria del viso o della mano, il riconoscimento dell’ iride e il futuristico riconoscimento della sequenza genica. In natura ci sono caratteristiche che differenziano in maniera univoca ogni essere umano, tali differenze se digitalizzate sono un ottimo metodo di riconoscimento e autenticazione. I sistemi biometrici Analizzeremo ora come è possibile tradurre una informazione biologica in segnali da utilizzare al posto della semplice crittografia. Coniugando questa scienza con tali informazioni è possibile raggiungere il massimo sistema di sicurezza ad oggi disponibile. Il fingerprint, come metodo di riconoscimento si sta affermando velocemente ed è già possibile trovare in vendita nei negozi specializzati hardware di questo tipo ad un prezzo accessibile. La microsoft ha realizzato periferiche di uso comune come mouse e tastiere che possiedono la funzione di fingerprint reader. Maggiori informazioni sul sito Microsoft.com (http://www.microsoft.com/italy/hardware/mouseandkeyboard/features/finger print.mspx) Analizziamo il funzionamento di tale tecnologia per la sostituzione delle password tenendo presente che il processo di acquisizione e digitalizzazione è praticamente uguale in ogni tipologia di riconoscimento biometrico. I sistemi biometrici Un sistema è detto biometrico quando è in grado di riconoscere una persona (cioè verificare se un individuo è veramente colui che dichiara di essere) sulla base di caratteristiche fisiologiche (impronta digitale, forma del volto o della mano, retina, iride, timbro di voce, vene …) e/o comportamentali (calligrafia, stile di battitura …). Un sistema biometrico è costituito da due diversi momenti: La fase di registrazione iniziale (normalmente definita enrollment), durante la quale vengono acquisiti più campioni della caratteristica biometrica e viene creato il modello che verrà usato per i confronti successivi. la fase di riconoscimento, che si ripete ogni qual volta l’utente si presenta al punto di controllo. I sistemi biometrici A sua volta la fase di riconoscimento può essere di due tipi: Si parla di verifica (o riconoscimento 1:1) quando l'utente che si presenta al punto di controllo confronta la sua caratteristica biometrica con quello che dovrebbe essere il suo modello regsitrato al momento dell'enrollment. Per fare questo, prima di identificarsi biometricamente, l'utente richiama il proprio modello digitando il codice univoco a lui associato (es. la propria matricola). Si parla invece di identificazione (o riconoscimento 1:N) quando l'utente che vuole identificarsi si confronta con tutta la popolazione degli N utenti presenti nel sistema. Al momento del riconoscimento, quindi, il dispositivo confronta la caratteristica sottopostagli con tutte quelle registrate. I sistemi biometrici Ma i sistemi di cui abbiamo parlato per la gestione delle password sono comunque validi? La risposta è decisamente si, la biometria sostituisce la password ottenendo una rappresentazione digitale della caratteristica fisiologica e trasformandola in un valore di 1024 bit che rappresenta la password e viene trattata dai sistemi informativi come se fosse immessa dall’ utente. Il vantaggio principale oltre a quelli ovvi dell’ unicità e della praticità di non dover conservare ne smart card, ne password tradizionali, è soprattutto quello che consente la scelta di una parola chiave di accesso al sistema talmente varia e incomprensibile che la rende molto protetta da attacchi di forza bruta e praticamente inattaccabile agli attacchi vocabolario. (Non di senso compiuto) I valori hash delle password “biometriche” sono trattati esattamente allo stesso modo delle password tradizionali ma con il vantaggio di essere assolutamente inavvicinabili. L’unico modo per sormontare un sistema biometrico è quello di cercare in qualche modo di ricreare in laboratorio la componente biologica della persona autorizzata, cosa attualmente possibile per le impronte digitali ma improponibile per il riconoscimento dell’ iride e della conformazione di vene e arterie. I sistemi biometrici Maggiori informazioni sulle applicazioni User consumer dei supporti biometrici ed in particolare su Fingerprint su http://www.microsoft.com Informazioni su altri sistemi biometrici quali riconoscimento della geometria del viso, della mano, dell’ iride o della struttura vascolare su http://www.biometric.it