Comments
Description
Transcript
rumore di fondo
Sicurezza dei Sistemi Informatici Advanced Encryption Standard & Steganografia Docente: Prof. Mastronardi Giuseppe Crittologia La Crittologia è la scienza delle scritture segrete e presenta due facce: 1) La Crittografia, il quale scopo è occultare il significato dell’informazione; 2) La Crittoanalisi, il quale scopo è decifrare i testi occultati senza sapere a priori come essi siano stati occultati. Proprietà della Crittologia Due proprietà basilari della crittologia sono state individuate da Shannon nel 1949 nel suo lavoro riconosciuto come uno dei testi fondanti la moderna crittologia e che va sotto il titolo: La teoria della comunicazione nei sistemi crittografici. Queste due proprietà sono: 1) CONFUSIONE 2) DIFFUSIONE Confusione e Diffusione Nel documento di Shannon si definisce la confusione il fatto che la relazione tra la chiave e il testo cifrato sia quanto più complessa e scorrelata possibile. La diffusione è invece la capacità dell’algoritmo di distribuire le correlazioni statistiche del testo lungo tutto l’alfabeto utilizzato dall’algoritmo di cifratura rendendo quanto più difficile possibile un attacco statistico. Confusione e Diffusione Le due proprietà citate si ottengono applicando un algoritmo di crittografia che può essere di due tipi: 1) di sostituzione 2) di trasposizione Entrambe sono utilizzate per eliminare le predominanze statistiche, quindi adatte per generare confusione. La crittografia assicura la riservatezza delle mie informazioni? Crittografia Vs. Steganografia Crittografia è steganografia? In molti casi questi due termini vengono confusi, tuttavia esistono enormi differenze sia concettuali sia tecniche. La crittografia ha come scopo finale il rendere un determinato messaggio incomprensibile a chi non possegga alcune informazioni prestabilite (una chiave di decifrazione), la steganografia nasconde l’esistenza stessa della comunicazione. Risulta tuttavia impossibile non notare una certa povertà di Contenuti presente nella steganografia rispetto alla crittografia, essa infatti non ha purtroppo avuto quella enorme spinta che il modello matematico è riuscito a dare a quest’ultima, in particolare con gli algoritmi crittografici asimmetrici. Steganografia Obiettivo: Nascondere l’esistenza di informazioni. L’obiettivo della steganografia è raggiungibile crittando prima i dati e poi codificandoli nel “rumore di fondo” di altri file. I file che contengono dati nascosti sono definiti file carrier e possono essere in formato audio o grafico. Steganografia Esempi di steganografia si individuano nell’antica grecia alcuni secoli prima di Cristo ed anche in terra Orientale e tutti portano comunque alla ricerca di sistemi di occultamento di informazione totalmente impensabili. Il maggior problema nella steganografia è il file contenitore. File CARRIER Caratteristica principale è il suo significato, esso deve essere il più possibile disgiunto dal significato dell’informazione da trasmettere. Nella scelta del contenitore bisogna perseguire due obiettivi: 1) Il contenitore deve essere generico e confondersi nella massa di messaggi e comunicazioni che il mezzo ospita; 2) Il contenitore non deve essere troppo diffuso per evitare che un intruso abbia modi di possedere una copia inalterata del contenitore. File CARRIER Come per le chiavi nella crittografia è consigliabile non utilizzare lo stesso contenitore più volte e soprattutto distruggere quelli già utilizzati in passate sessioni. Molta rilevanza nella scelta del contenitore è data dalla Entropia di Shannon, essa ne determina la quantità di informazione ridondante presente, indicatore principale dell’alterabilità del contenitore in termini quantitativi, la presenza forte di tale informazione si traduce in un basso valore di entropia che permette l’inserimento di materiale steganografato con minore impatto. Quale file carrier scegliere? Abbiamo dunque detto che i file candidati a ricoprire il ruolo di contenitore devono avere una bassa entropia e un rumore di fondo non troppo elevato da destare sospetti, ma presente. File a bassi valori di entropia sono: - File testuali txt; - File audio in formato MIDI o WAVE; - File immagine BMP o GIF a colori tenui ed a equilibrio fra aree ad alto contrasto locale ed aree sfumate Quale file carrier evitare? Ovviamente ci sono delle tipologie di file sconsigliate come ad esempio file ad elevati valori di entropia quali: - File Mp3, scarso rumore in quanto rappresentano un segnale campionato; - File Jpeg, scarta le informazioni meno significative dal punto di vista visivo, privandoci quindi di eventuali pixel candidati all’occultamento dell’informazione. Modelli Steganografici La steganografia può essere classificata in: - Iniettiva; - Generativa. Dopo di che si può classificare in: - Sostitutiva; - Selettiva; - Costruttiva. In questo lavoro ci occupiamo della Iniettiva-Sostitutiva. Modelli Steganografici Iniettiva vuol dire che il messaggio da nascondere viene inserito in un contenitore esistente, sostitutiva nasce dalla tecnica di occultamento utilizzata, si è detto che il carrier deve avere un certo “rumore di fondo”, ossia un certo grado di alterabilità che rientri nei limiti del “non destare sospetti”, ed è proprio in questo rumore che nasconderemo il nostro messaggio. Come applicare la sostituzione? Per spiegare quanto detto prendiamo in esame la palette del web, in questa abbiamo 256 colori, rappresentati ciascuno da una sequenza di cifre esadecimali. Con 256 valori possiamo rappresentare tutti i caratteri che ci servono; quindi ipoteticamente anche realizzando una tabella in html a colori possiamo facilmente “scrivere” il nostro messaggio nascosto. Come applicare la sostituzione? Vediamo un esempio pratico: <table id=”table1”> <tr> <td bgcolor=”#004700”></td><td bgcolor=”48004F”></td> <td bgcolor=”005300”></td><td bgcolor=”540000”></td> </tr> </table> Scrivendo questo codice in un qualsiasi editor e visualizzandolo con un browser abbiamo questo effetto cromatico. Cosa è cambiato? Da questo esempio osserviamo che: 1) la impercettibile variazione visiva dei due verdi è in realtà una significante sostituzione di carattere, infatti il primo rappresenta una G (47) e l’altro invece una S (53); è bastato cambiare il valore esadecimale 47 con 53 e l’informazione è stata occultata senza il minimo sospetto; Cosa è cambiato? 2) in questa tabella colorata si nasconde una vera e propria parola, incredibile ma vero. Analizzando i codici esadecimali ed eliminando quei nulli, abbiamo 47, 48, 4F, 53 e 54 che convertiti in binario e facendone il corrispettivo ASCII ci dà GHOST. Abbiamo dunque sostituito i bit meno significativi e nascosto il messaggio da proteggere. Advanced Encryption Standard La steganografia per essere efficace deve essere completata con la crittazione di quanto facciamo, ed è per questo che si ricorre ad AES, Advanced Encryption Standard. AES è un algoritmo di cifratura a blocchi che data la sua Sicurezza e le sue specifiche pubbliche si è imposto come standard sostitutivo al DES. La differenza sostanziale è che AES è una rete a sostituzione e permutazione mentre DES è una rete di Feistel (algoritmo di cifratura a chiave simmetrica). Advanced Encryption Standard Nell’AES il blocco è a dimensione fissa (128 bit) e la chiave può essere di 128, 192 o 256 bit. AES opera utilizzando matrici di 4x4 byte chiamate State. Quando l’algoritmo ha blocchi di 128 bit in input, la matrice State ha 4 righe e 4 colonne; se il blocco di bit in input diventa di 32bit più lungo viene aggiunta una colonna allo State, e così via fino a 256. Cifrare con AES Per cifrare, ogni round dell’AES (eccetto l’ultimo) si sviluppa nei seguenti quattro passaggi: 1) SubBytes Ogni byte della matrice viene modificato tramite la S-box a 8bit per fornire non linearità all’algoritmo. La S-box è stata scelta con cura per non possedere punti fissi evitando così un potenziale attacco algebrico. Cifrare con AES Nei blocchi di cifratura le S-box vengono utilizzate per oscurare le relazioni tra il testo in chiaro e il testo cifrato seguendo il principio della confusione enunciato da Shannon. Le S-box vengono progettate per resistere alla crittoanalisi, e in generale ricevono m bit di ingresso e li trasformano in n bit di uscita. Una S-box è una matrice n x m. Ecco un esempio: 4 bit centrali in ingresso S5 Altri bit 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1100 1011 1100 1101 1110 1111 00 0010 1100 0100 0001 0111 1100 1011 0110 1000 0101 0011 1111 1101 0000 1110 1001 01 1110 1011 0010 1100 0100 0111 1101 0001 0101 0000 1111 1100 0011 1001 1000 0110 10 0100 0010 0001 1011 1100 1101 0111 1000 1111 1001 1100 0101 0110 0011 0000 1110 11 1011 1000 1100 0111 0001 1110 0010 1101 0110 1111 0000 1001 1100 0100 0101 0011 Questa S-box ha 6 bit di ingresso e 4 bit in uscita. Il primo e l’ultimo bit vengono utilizzati per individuare la riga mentre i bit centrali per la colonna. Ad esempio il numero in ingresso “011011” ha agli estremi i bit “01” e centralmente i bit “1101” che producono come uscita “1001” Cifrare con AES 2) ShiftRows Si scostano le righe della matrice di un parametro dipendente dal numero di riga. Nell’AES la prima riga è invariata, la seconda viene spostata di un passo verso sinistra, la terza di due posti e la quarta di tre posti. In questo modo l’ultima colonna dei dati in ingresso forma la diagonale della colonna in uscita. Cifrare con AES 3) MixColumns Si prendono 4 byte di ogni colonna e si combinano utilizzando una trasformazione lineare invertibile. Utilizzati in congiunzione, ShiftRows e MixColumns provvedono all’operazione di diffusione nell’algoritmo. Ogni colonna è gestita da un polinomio (x^4 + 1) definito sui campi finiti e moltiplicata con un polinomio fisso c(x). Cifrare con AES 4) AddRoundKey Ogni byte della tabella viene Combinato in XOR con la chiave di sessione con la matrice ottenuta dai passaggi precedenti. La chiave di sessione viene ricavata dalla chiave primaria dal gestore della chiave. L’ultimo round salta il MixColumns. Valutazioni sulla sicurezza di AES La sicurezza viene valutata dalla National Security Agency (NSA) su due livelli: 1) SECRET 2) TOP SECRET Per il primo è sufficiente una chiave a 128 bit mentre per il secondo si consigliano chiavi a 192 o 256 bit. Ciò non vuol dire che 128 bit non assicurano sicurezza, ma che con il livello TOP SECRET ci si vuole garantire un elevato margine di sicurezza per i prossimi decenni contro un potenziale attacco esaustivo. Valutazioni sulla sicurezza di AES La maggior parte degli algoritmi crittografici viene forzato riducendo il numero di round. L’AES effettua 10 round per le chiavi a 128 bit, 12 round per la chiave a 192 bit e 14 round per la chiave a 256 bit. I migliori attacchi sono riusciti a forzare l’AES con 7 round e chiave di 128 bit, 8 round e chiave di 192 bit e 9 round e chiave di 256 bit. Attualmente comunque una ricerca esaustiva è impraticabile, la chiave a 128 bit produce 3.4 x 10^38 combinazioni diverse. Un dubbio riguardante l’AES deriva dalla sua struttura matematica approfonditamente descritta. Sebbene non sia stata mai utilizzata per condurre un attacco questo non esclude che in futuro questa descrizione venga utilizzata per condurre un attacco basato sulle proprietà matematiche. Attacchi all’AES Uno dei migliori attacchi a forza bruta è stato svolto dal progetto distributed.net su una chiave a 64 bit utilizzando l’algoritmo RC5; l’attacco ha impiegato quasi 5 anni, utilizzando il tempo “libero” di migliaia di CPU di volontari sparsi per la rete. Nel 2002 l’attacco teorico chiamato attacco XSL annunciato da Courtois e Pieprzyk ha mostrato un potenziale punto debole di AES nella sua descrizione matematica, ma un attacco del genere è impraticabile nella realtà per via dell’enorme tempo macchina richiesto. AES comunque è considerato un algoritmo veloce, sicuro e gli attacchi fino a ora presentati si sono rivelati degli interessanti studi teorici ma di scarsa utilità nella pratica. Software per la steganografia Approfondiamo il discorso sulla steganografia con degli esempi Pratici utilizzando i seguenti software: 1) Steganos Security Suite 4 2) S-Tools 4 Il primo mette a disposizione diverse funzioni, ma noi utilizziamo per i nostri scopi il tool Steganos File manager che permette di codificare e nascondere file e cartelle. Il secondo verrà utilizzato per utilizzare un file audio come contenitore. Esempio con Steganos Security Supponiamo di voler “passare” due file, un testo ed un database ad un nostro cliente e di farlo inviandogli una cartolina del luogo della nostra ultima vacanza. Teniamo bene a mente questa immagine BMP. Osservazioni sull’immagine Questa immagine si presta molto bene ai nostri scopi in quanto presenta uno sfondo molto tenue ed anche un po’ sfocato, il che significa che in quei pixel sarà facile modificare i bit meno significativi senza perdita di fedeltà dalla immagine madre. Anche la scogliera in primo piano si presta ottimamente presentando aree miste e senza una logica di accoppiamento di aree scure ed aree chiare così come il mare con in trasparenza la scogliera sommersa. Possiamo quindi dire con certezza che questa immagine è un buon contenitore per i nostri scopi grazie anche alla sua unicità, infatti non è usuale vedere questa immagine cosi come potrebbe esserlo una foto delle Maldive. Cattive immagini Questo tipo di immagini sono da sconsigliare dato che hanno pochi colori e quindi codificabili con meno bit; se cambio dei bit potrei accorgermi che il nero non è più nero ed il bianco non è bianco. Considerato il fatto che questa immagine è abbastanza famosa e che si sa che è composta dai soli colori bianco e nero, è facilmente smascherabile da qualche sospettoso qualora non veda i giusti colori. Altro motivo legato alla fama di questa immagine è che la persona alla quale stiamo inviando il file potrebbe averne già una copia e non desiderarne un’altra. Esempio con Steganos Security Tornando alla suite Steganos ci si accorge che se proviamo ad utilizzare come carrier dei due file da occultare quest’ultima immagine, ci verrà restituito un messaggio d’errore che ci dice: impossibile utilizzare questo file. Questo è dovuto alla natura intrinseca del file che Steganos percepisce dal suo peso e dalle sue caratteristiche. Solo dopo diverse modifiche, come l’aggiunta di una immagine di sfondo e la colorazione di topolino, il file ci è stato accettato. Da ciò si capisce che è buona norma utilizzare file con peso di almeno un ordine di grandezza superiore al file da occultare onde evitare sospetti derivanti dal peso dell’immagine. Nella prossima slide il file modificato per Steganos Security. Esempio con Steganos Security Si nota quante modifiche abbiamo dovuto apportare per far si che Steganos Security accettasse questo file come contenitore. Risultato di un file carrier inopportuno Se avessimo comunque utilizzato il file precedente, un possibile risultato del suo impiego in modalità di carrier avrebbe portato ad un risultato come in figura, con diverse aree sporche che avrebbero potuto insospettire qualche “curioso”. Esempio con Steganos Security Passo successivo in Steganos è digitare una password. A riguardo di ciò, Steganos scandisce la sicurezza della password sulla base della sua lunghezza in termini di bit seguendo questa suddivisione: da 10 a 40 bit la password non garantisce nessuna protezione significativa; da 41 a 60 bit impossibile decifrare la password da parte di tecnici informatici; da 61 a 110 bit impossibile decifrare la password da parte di hacker che utilizzano più computer; da 111 a 128 bit impossibile decifrare la password da parte di hacker professionisti che utilizzano un’ampia gamma di computer. Ovviamente Steganos utilizza AES per la crittografia della password beneficiando di tutte le virtù prima descritte in merito ad AES. Esempio con Steganos Security File originale File steganografato E’ evidente come sia impercettibile ed impensabile che questa bella foto possa contenere informazioni con elevato grado di sensibilità. Esempio con S-Tools S-Tools mostra l’occultamento dei nostri file in un file wave permettendoci a differenza di Steganos di visualizzare la forma d’onda del contenitore prima e dopo il suo utilizzo. Iniziamo con delle considerazioni sul tipo di file carrier da scegliere. Visualizziamo la forma d’onda del file candidato al ruolo di carrier: Esempio con S-Tools Si osserva da questa immagine che il file è stereo, utilizza due canali, e cosa interessante sui due canali abbiamo onde differenti. Questo, assieme al fatto che ha un andamento lineare senza picchi accentuati ed un rumore di fondo che si evidenzia facendo un Noise Reduction con CoolEdit ci dà preziose indicazione sulla bontà di questo carrier. Esempio con S-Tools Abbiamo sin qui detto che si utilizza il rumore di fondo per nascondere i nostri bit, ma dove è effettivamente questo rumore? Si osserva un segnale (curva gialla) abbastanza definita ed un segnale molto frastagliato che lo insegue, è proprio questo a rappresentare il rumore ed a permettere l’incapsulamento dell’informazione. Esempio con S-Tools Dopo le considerazioni fatte è il momento di nascondere i nostri file; per far ciò avviamo S-Tools e con un semplice drag and drop trasciniamo il file contenitore nell’area di lavoro e notiamo che si sviluppa il suo spettro come in figura. Fatto ciò con un altro drag and drop trasciniamo su questa finestra i file da nascondere. Esempio con S-Tools S-Tools ci chiederà adesso una password, per la quale possiamo ritenere valide le considerazioni fatte per Steganos, e l’algoritmo da utilizzare per la crittazione. La versione utilizzata di S-Tools prevede la crittografia con IDEA (International Data Encryption Algorithm), DES (Data Encryption Standard) e 3DES ( il DES applicato con più passate), ma non con AES di cui abbiamo ampiamente parlato. Scegliamo DES ed diamo inizio all’incapsulamento dei nostri file. Risultato di S-Tools File originale File con dai nascosti Le due onde sembrano uguali ma nel secondo vi sono anche i nostri file nascosti. Se avessimo scelto un file Mp3 e quindi un file audio compresso, CoolEdit non ci avrebbe dato nessun rumore di fondo, ed S-Tools lo avrebbe rifiutato come file carrier. Conclusioni Lo sviluppo della steganografia è molto importante dato che è un ulteriore livello di sicurezza in più alla crittografia, e poi come opinione personale mi sento di dire che è proprio una bella invenzione, chi penserebbe che dietro una bella foto o una bella canzone si celano un po’ di file dal contenuto altamente sensibile! Questo è ciò che mi ha spinto a fare questo lavoro di ricerca sulla steganografia, per capire come sia possibile fare quanto appena detto. Quindi per chiunque voglia steganografare i sui dati suggerisco di porre molta attenzione nel file carrier, fate in modo che sia del giusto formato, delle giuste dimensioni, che abbia le caratteristiche di cui vi ho parlato e fate molta attenzione anche alla password impiegata, fate si che regni la confusione e la diffusione, così come disse Shannon.