Sicurezza delle reti informatiche: come, dove e perchè F.Baiardi *, S.Suin+, C.Telmon* *Dipartimento di Informatica, +Centro SerRA Università di Pisa Fabrizio Baiardi-I punti critici -1 © Fabrizio Baiardi, 1999 Sicurezza Informatica UniPI corso Sicurezza delle Reti -DU in Informatica progetto Credits corsi specialistici sviluppo di software per sicurezza proxy sicuro firewall kit autorità di certificazione in Java Fabrizio Baiardi-I punti critici -2 © Fabrizio Baiardi, 1999 I temi trattati oggi I punti critici di una rete informatica come individuarli Gli strumenti per attaccare come violare i punti critici Gli strumenti per difendersi dagli attacchi come rafforzare il sistema Fabrizio Baiardi-I punti critici -3 © Fabrizio Baiardi, 1999 Politiche di sicurezza la definizione della politica di sicurezza non può che partire da una analisi dei rischi l’analisi dei rischi deve individuare i punti critici criticità = ridotta robustezza Fabrizio Baiardi-I punti critici -4 © Fabrizio Baiardi, 1999 Robustezza Informatica robustezza di un componente = capacità di non danneggiare il sistema in cui è inserito quando vengono violate le specifiche del componente stesso violazione delle specifiche = input diversi da quelli specificati, risorse diverse da quelle specificate Fabrizio Baiardi-I punti critici -5 © Fabrizio Baiardi, 1999 Robustezza Informatica è una proprietà diversa da correttezza, efficienza, facilità d’uso, .... è in contrasto con efficienza e facilità d’uso, può aumentare solo a spese di queste due proprietà No Free Lunch Theorem Fabrizio Baiardi-I punti critici -6 © Fabrizio Baiardi, 1999 Robustezza Informatica Un programma per il calcolo degli stipendi che dato un nome restituisce lo stipendio - corretto se calcola lo stipendio esatto - efficiente se impiega poco tempo - facile da usare se addestramento è breve - robusto ???? Fabrizio Baiardi-I punti critici -7 © Fabrizio Baiardi, 1999 Robusto .... nome sbagliato nome non esistente allocata meno memoria di quella necessaria file con nomi non esistente file con qualifiche non esistente disco non esistente .... Fabrizio Baiardi-I punti critici -8 © Fabrizio Baiardi, 1999 Quanto robusto .... è estremamente difficile prevedere tutte le possibili violazioni delle specifiche robustezza non è una proprietà 0/1 misura di robustezza = associare ad ogni componente un valore da 0 a 1 1 è valore asintotico Fabrizio Baiardi-I punti critici -9 © Fabrizio Baiardi, 1999 Quanto robusto Robustezza 1 Numero dei controlli Fabrizio Baiardi-I punti critici -10 © Fabrizio Baiardi, 1999 Quanto robusto valore dipende dai controlli che il componente esegue sul proprio ambiente robustezza tende ad 1 al tendere ad infinito dei controlli normalmente i controlli sono inutili, ciò limita il numero dei controlli possibili senza danneggiare le Fabrizio Baiardi-I punti critici -11 prestazioni © Fabrizio Baiardi, 1999 Robustezza è stato provato come controlli anche banali siano in grado di rilevare numerose situazioni anomale quindi è bene eseguire controlli sofisticati solo dopo quelli semplici i controlli più significativi sono quelli sull’uso dei dati coerenti con i tipi dichiarati Fabrizio Baiardi-I punti critici -12 © Fabrizio Baiardi, 1999 Robustezza è inutile cercare di essere impenetrabili occorre essere costosi (tempo e danaro ) da penetrare Fabrizio Baiardi-I punti critici -13 © Fabrizio Baiardi, 1999 Sistema Robusto ... la robustezza di un sistema nasce dalla robustezza dei suoi componenti è inutile costruire sistemi ove componenti robusti interagiscono con componenti poco robusti criticità dei sistemi operativi e dei linguaggi di programmazione per la robustezza Fabrizio Baiardi-I punti critici -14 © Fabrizio Baiardi, 1999 Robustezza Globale ... Applicazioni Sistema Operativo Hardware è inutile, e dannoso, costruire applicazioni robuste su sistemi non robusti è inutile costruire utilizzare la crittografia su sistemi in punti cuicritici è facile Fabrizio Baiardi-I -15 © Fabrizio Baiardi, 1999 Robustezza globale ... la situazione può essere ancora più critica nel caso di linguaggi di programmazione un linguaggio poco robusto inficia tutte le applicazioni sviluppate con quel linguaggio un linguaggio con operazioni sui vettori non controllate non può essere robusto Fabrizio Baiardi-I punti critici -16 © Fabrizio Baiardi, 1999 Robustezza globale esistono molti attacchi a cui sono soggette tutte le applicazioni sviluppate in C tutti questi attacchi sono possibili perchè il C non controlla che le operazioni sui dati siano coerenti con il tipo dichiarato le operazioni sui vettori rispettino i limiti dichiarati per il vettore stesso Fabrizio Baiardi-I punti critici -17 © Fabrizio Baiardi, 1999 Come valutare la robustezza Caso di interesse : un componente condiviso di un sistema che definisce un insieme di operazioni le operazioni possono essere invocate da “utenti” che condividono il componente le operazioni sono fisse ma gli utenti possono variare Fabrizio Baiardi-I punti critici -18 © Fabrizio Baiardi, 1999 Valutazione: primo criterio esiste una struttura dati che rappresenta i diritti degli utenti sul componente diritto = operazioni che utente può invocare assenza di informazioni deve essere interpretata come un divieto la struttura o è interna al componente o è utilizzata dal sistema operativo Fabrizio Baiardi-I punti critici -19 © Fabrizio Baiardi, 1999 Valutazione: primo criterio struttura dati complessiva = matrice di protezione soggetto = può invocare una operazione = utente o altro componente oggetto = un componente condiviso controllo degli accessi = controllo dei diritti dei soggetti sugli oggetti Fabrizio Baiardi-I punti critici -20 © Fabrizio Baiardi, 1999 Matrice di protezione oggetti A B X Op1 Op1, Op2 Y Op3 Op1 C X Y Op3 Op1, Op2 Op4 Z Fabrizio Baiardi-I punti critici -21 © Fabrizio Baiardi, 1999 Matrice di protezione i controlli sono eseguiti ogni volta che un soggetto invoca una operazione riga della matrice = dominio di protezione di un soggetto non può esistere robustezza senza una qualche rappresentazione di questa struttura domini non gerarchici Fabrizio Baiardi-I punti critici -22 © Fabrizio Baiardi, 1999 Matrice di protezione nel caso in cui gli oggetti siano i file di un server ed i soggetti siano gli utenti del server stesso sono necessarie da 10 a 15 ore per rappresentare correttamente la matrice di protezione (stima NSA) in questo caso i diritti sono semplicemente lettura, scrittura ed esecuzione Fabrizio Baiardi-I punti critici -23 © Fabrizio Baiardi, 1999 Matrice di protezione sorge il problema della identificazione di un soggetto password crittografia uso di certificati e firma elettronica .... Fabrizio Baiardi-I punti critici -24 © Fabrizio Baiardi, 1999 Matrice di protezione non sempre questo criterio è applicabile perchè non tutte le risorse sono sotto il controllo del sistema ad esempio non è possibile garantire che nessuno stia monitorando il traffico sulle linee fisiche crittografia Fabrizio Baiardi-I punti critici -25 © Fabrizio Baiardi, 1999 Domini di protezione è fondamentale poter associare un dominio di protezione ad ogni applicazione il rispetto del dominio deve essere garantito dal sistema operativo del/dei nodi dove essa è eseguita questo mandatory access control si affianca a quello dell’applicazione stesso Fabrizio Baiardi-I punti critici -26 © Fabrizio Baiardi, 1999 Tre politiche per la robustezza il primo criterio evidenzia tre politiche che sono fondamentali per la robustezza controlli nell’accesso agli oggetti controlli di identificazione politiche di crittografia per l’identificazione dei soggetti per la confidenzialità dei dati Fabrizio Baiardi-I punti critici -27 © Fabrizio Baiardi, 1999 Valutazione: secondo criterio per rispecchiare l’avanzamento della computazione i diritti (e quindi la matrice) variano dinamicamente occorre minimizzare il dominio corrente di ogni soggetto al diminuire del dominio aumenta la capacità di rilevare comportamenti anomali Fabrizio Baiardi-I punti critici -28 © Fabrizio Baiardi, 1999 Valutazione: secondo criterio in teoria occorre modificare la matrice per ogni istruzione eseguita ovviamente questo produce un sistema robusto ma inutile una granularità più ragionevole è quella delle procedure o dei metodi Fabrizio Baiardi-I punti critici -29 © Fabrizio Baiardi, 1999 Valutazione: secondo criterio il criterio sottolinea l’importanza di eliminare le funzionalità non necessarie generalizzazione = la regola KISS Keep It Simple Stupid è più semplice garantire la robustezza di un sistema semplice non si attacca quel che non esiste Fabrizio Baiardi-I punti critici -30 © Fabrizio Baiardi, 1999 Valutazione: secondo criterio separare i componenti critici dal punto di vista della robustezza dagli altri possibile aumentare i controlli nei componenti critici per la robustezza un codice che deve essere commentato è troppo complesso per essere robusto Fabrizio Baiardi-I punti critici -31 © Fabrizio Baiardi, 1999 Valutazione: terzo criterio non deve essere possibile violare i controlli operando ad un livello diverso da quello considerato ciò avviene tipicamente se è possibile utilizzare nella stessa applicazione due linguaggi di programmazione con caratteristiche diverse (linguaggio ad alto livello e assembler) Fabrizio Baiardi-I punti critici -32 © Fabrizio Baiardi, 1999 Sistema Robusto Applicazioni Sistema Operativo Assembler Firmware Hardware Fabrizio Baiardi-I punti critici -33 © Fabrizio Baiardi, 1999 Valutazione: quarto criterio la robustezza aumenta se lo stesso controllo viene ripetuto in componenti diversi ad esempio il possesso di un diritto viene controllato prima nell’invocante e poi nell’invocato evitare i punti di caduta catastrofica = sandbox di Java, firewall, ... Fabrizio Baiardi-I punti critici -34 © Fabrizio Baiardi, 1999 Come utilizzare i criteri un uso paranoico dei criteri può portare a sistemi robusti ma inutilizzabili questo non sembra comunque un rischio a breve termine attualmente un pizzico di paranoia non può che essere utile e produttivo Fabrizio Baiardi-I punti critici -35 © Fabrizio Baiardi, 1999 Come utilizzare i criteri individuare i componenti critici inserire tutti i controlli che non riducono le prestazioni di tali componenti spesso il controllo può essere inserito in componenti che interagiscono con quelli ad elevata criticità bilanciamento del carico rilevazione veloce di violazioni Fabrizio Baiardi-I punti critici -36 © Fabrizio Baiardi, 1999 Come utilizzare i criteri stabilire la probabilità di attacco ad ogni punto aumentare la robustezza di un punto in maniera proporzionale agli attacchi non comprare un firewall poco robusto Fabrizio Baiardi-I punti critici -37 © Fabrizio Baiardi, 1999 a firewall is a replacement of the