Comments
Description
Transcript
crittografia
Sicurezza dei Sistemi Informatici Crittografia - Steganografia Docente: Prof. Giuseppe Mastronardi Sommario Introduzione La Crittografia La Steganografia Algoritmi per l’implementazione del software Descrizione e visualizzazione delle simulazioni Conclusioni e sviluppi futuri Obiettivo Introduzione ed realizzazione di tecniche di stegano-crittografia: Simulazione dei processi crittografici sincronizzati alla steganografia delle immagini Valutazione dei risultati sperimentali Introduzione Privacy e sicurezza sono termini sempre più ricorrenti nel nostro vocabolario di uso comune considerando anche che grandi aziende multinazionali vi investono miliardi di dollari. I militari hanno sicuramente giocato il ruolo più importante in quanto la crittografia (dal greco kryptos, nascosto, e graphein, scrivere) applicata a scopi bellici ha rappresentato per molti secoli un'arma determinante nelle mani di coloro che sapevano come usarla. Introduzione Da recenti indagini è emerso che si chiama "steganografia" la scienza più amata dai Bin Laden di tutto il mondo e, come già indica l'etimologia (dal greco "stèganos", nascosto, e "grafèin", scrivere), nella sua versione tecnologica consente di nascondere all'interno di file digitali, immagini o suoni che siano, ogni tipo di messaggio segreto. Invisibili a occhio (od orecchio) nudo ma decodificabili senza troppi problemi a chi sa dove andarli a cercare su reti globali come Internet. Introduzione Come ben sappiamo dalle ultime notizie l’importanza della sicurezza ha coinvolto anche la F1 punta dell’iceberg.” Dalla pista, ormai, il verdetto è arrivato: le Frecce d'argento hanno battuto il Cavallino rampante, a meno di improbabili ribaltoni tecnici da qui alla fine della stagione. A Maranello hanno incassato con stile la sconfitta in gara ma fanno sapere che di pace preventiva non se ne parla ed è stato lo stesso Jean Todt, amministratore delegato del Cavallino, a confermare come la Ferrari sarà in grado di produrre nuove prove a carico della scuderia rivale da portare in dote al Consiglio mondiale della Fia, la Federazione Internazionale dell'Automobilismo”. Le prove sono sottoforma di e-mail, messaggi via Sms, appunti, disegni e quant'altro dove non è da escludere l’impiego di tecniche stegano-crittografiche. Introduzione Il libro Codice da Vinci ha incassato assieme al film cifre record facendo ritornare più che mai di moda il tema dei segreti dell’antichità e di personaggi illustri come Leonardo da Vinci. Le analogie con la steganografia emergono quando si racconta che all’interno della Gioconda ci sarebbero delle indicazioni misteriose dello stesso autore. La Crittografia: cenni storici La Crittologia ingloba in se termini più specifici: Crittografia: protezione dei messaggi. Crittanalisi: violazione della protezione o “crittazione”. La cifratura è la trasformazione del messaggio in un crittogramma mentre l’antitrasformazione è detta decifratura La crittografia è una scienza antichissima utilizzata per nascondere messaggi tra regnanti, imperatori, nobili. ● Nell'epoca dell'impero romano e di Giulio CESARE, quando ancora pochi sapevano leggere e scrivere, per comunicare con i sui generali, egli sostituiva ad ogni lettera del messaggio un'altra lettera con un certo numero di posizioni più avanti nell'alfabeto. Per l'esattezza utilizzava la chiave “3”, tutte le lettere venivano scalate di tre cifre: la A diventava D, la B diventava E, la C diventava F e così via. Un metodo semplicissimo ma per quell'epoca più che rivoluzionario. La debolezza di questo codice sta nel fatto che si possono utilizzare solo 25 chiavi, cioè tante quanto le lettere dell'alfabeto. Comunque è da questo cifrato che iniziano i miglioramenti e l'evoluzione della crittografia. La Crittografia: cenni storici ● ● ● VIGENERE: è stato inventato da Blaise De Vigenere nel 1586, si tratta di un codice a sostituzione polialfabetica. E' un'estensione più moderna (per l'epoca) del codice di Cesare, dove al posto di spostare le lettere di una stessa quantità, venivano spostate in base alla chiave. ATBASH: consisteva nel cifrare la prima lettera dell'alfabeto ebraico con l'ultima. La seconda con la penultima e così via. Dispositivo di JEFFERSON: Thomas Jefferson, all'epoca Segretario di Stato americano, in seguito divenuto Presidente, inventò un sistema composto da cilindri e dischi ruotanti intorno ad un asse. Il cilindro era lungo 15 cm e largo 4. Questo cilindro era formato da 36 ruote della stessa misura. Ognuna di esse aveva all'esterno tutte le 26 lettere dell'alfabeto ma con ordine casuale, e diverso nelle varie 36 ruote. Ogni ruota aveva un numero. Il testo cifrato veniva composto inserendo le varie ruote in un ordine prestabilito (è proprio quest'ordine che rappresenta la chiave da comunicare al destinatario). In questa immagine il dispositivo di JEFFERSON. La Crittografia: cenni storici ●ENIGMA: fu l'ultimo passo prima della crittografia moderna. Fu ideato dall'ingegnere tedesco Arthur Scherbius. Era una macchina elettromeccanica composta da ruote con i caratteri incisi sul bordo, e con contatti elettrici in corrispondenza delle lettere su entrambi i lati. Il testo in chiaro, digitato su una tastiera, veniva riprodotto utilizzando i caratteri della prima ruota, la quale a sua volta costruiva un nuovo alfabeto utilizzando i caratteri della seconda, e poi della terza, e così via. Tutte le ruote, e potevano essere parecchie, venivano "scalate", in modo che la sostituzione delle lettere fosse ogni volta diversa. La chiave consisteva nel settaggio iniziale delle ruote, che potevano essere posizionate in una quantità di posizioni diverse tanto alte quante più erano le ruote utilizzate. Tra il 1939-1940 un gruppo di matematici inglesi guidati da Alan Turing (l'ideatore della macchina astratta di calcolo) progettarono e costruirono una macchina, chiamata Bombe, con cui riuscirono a decifrare i messaggi tedeschi. Fu attaccato anche dal matematico polacco Marin Rejewsky che con il suo lavoro permise di decifrare numerosi messaggi militari tedeschi, uno dei passi che contribuì alla vittoria degli Alleati. ●Cifrario di VERNAM ad inventarlo fu G.S. Vernam. E' uno dei più potenti metodi di crittografia. La chiave deve essere una sequenza casuale di caratteri ed avere una lunghezza uguale o superiore al testo in chiaro. Così facendo è matematicamente impossibili decifrare il testo criptato. Questo sistema fu utilizzato durante la Guerra Fredda fra i Presidenti USA-URSS. La Crittografia: evoluzione Un algoritmo di crittografia riceve un testo da codificare (detto testo in chiaro o Plain-text) e lo trasforma, attraverso la chiave, in un testo cifrato (Cipher-text) apparentemente incomprensibile. cifratura: M = Ck(Mc) decifratura: Dk(Ck(M)) = M M è il messaggio da cifrare, C è l'algoritmo di codifica, D quello di decodifica e k la chiave per i due algoritmi. I metodi di crittografia di questo tipo, cioè che utilizzano la stessa chiave per la codifica e la decodifica sono detti a chiave segreta (o simmetrici), altri metodi che utilizzano due chiavi diverse per la codifica e la decodifica vengono detti a chiave pubblica (o asimmetrici). La Crittografia: evoluzione Gli algoritmi simmetrici usano un sistema per cifrare che può essere a flusso o a blocchi. Se a flusso, il codice cripta un bit, byte o una parola alla volta. Se a blocchi, viene applicato ad un gruppo di bit, byte o parole. Gli algoritmi simmetrici a blocchi principali sono: -BLOWFISH algoritmo creato da Bruce Schneier. L'autore ha implementato nel cifrario varie tecniche, fra cui Feistel network, S-box dipendenti da chiavi, funzioni non invertibili ed altro ancora. In sostanza è uno dei più sicuri. -DES la descrizione del DES si trova più avanti. -IDEA descrizione nelle pagine seguenti. -RIJNDAEL sistema di crittografia sviluppato dai matematici belgi Joan Daemen e Vincent Rijmen su richiesta della Advanced Encryption Standard (AES), fa uso di chiavi di lunghezza variabile (128, 182 e 256 bit). Viene nominato come standard AES, in sostituzione del DES. E' implementato via software in molti linguaggi: C/C++, Java, Lisp, Phyton ed anche in Perl e Javascript. -SERPENT algoritmo progettato da Ross Anderson, Eli Biham e Lars Knudsen, su richiesta della AES. Il Serpent adopera chiavi di 256 bit su blocchi di 128 bit, ed ha resistito alla crittoanalisi lineare e differenziale. Contiene delle permutazioni iniziali e finali, così come il DES. La Crittografia: evoluzione -DSA acronimo di Digital Signature Algorithm inglobato nel Digital Signature Standard (DSS), è un cifrario usato per generare le firme digitali, più debole rispetto ad esempio all'RSA. Il software GnuPG lo usa con ELGAMAL per la creazione delle coppia di chiavi pubblica e privata. Non adatto per la crittografia dei dati. -RSA descrizione più avanti. Algoritmi per il calcolo dell'hashing di un documento (vedere il paragrafo “Funzioni di Hash”): -MD4 algoritmo di hash considerato sicuro ed alla base delle funzioni Hash. Il messaggio viene suddiviso in blocchi di 512 bit, poi tramite una struttura iterativa il blocco viene elaborato da una funzione di compressione sui blocchi di 512 bit per la generazione del valore hash. L'output ha una lunghezza di 128 bit. Hans Dobbertin ha sviluppato un attacco a questo algoritmo, in grado di generare collisioni in un minuto di tempo di calcolo su un normale computer. -SHA-1 acronimo di Secure Hash Algorithm-1, sviluppato dal NSA su richiesta del National Institute of Standard and Technology (NIST), è simile all'algoritmo MD4. L'originale progetto del 1994 aveva il nome di SHA, poi modificato nel codice dal NSA. Produce output di 160 bit. Attualmente è uno dei più sicuri, usato anche dai programmi -PGP e GPG per firmare un documento. -SHA-2, Secure Hash Algorithm-2, versione successiva a SHA-1, genera impronte di documenti da 256, 384 e 512 bit. La Crittografia: evoluzione Il problema della trasmissione della chiave ● Volendo utilizzare un cifrario simmetrico per proteggere le informazioni tra due interlocutori come posso scambiare la chiave segreta? Devo utilizzare un canale sicuro di comunicazione. ● Ma tale canale sicuro esiste nella realtà? ● Per una comunicazione sicura tra n utenti si dovranno scambiare in tutto (n-1)*n/2 chiavi, ad esempio con 100 utenti occorreranno 4950 chiavi, il tutto per ogni comunicazione! La Crittografia: evoluzione DES (Data Encryption Standard) ● Sviluppato dall.IBM nel 1970 diventato standard nel 1976. ● Utilizza chiavi di 56 bit, divide il testo in chiaro in blocchi di 64 bit, effettua delle permutazioni iniziali e finali ed un ciclo di 16 iterazioni di permutazioni e xor (Feistel network, tecniche di confusione e diffusione). ● Il 17 Luglio 1998, l.EFF (Electronic Frontier Foundation) costruisce un sistema dedicato in grado di violare il DES in meno di 3 giorni, tramite un attacco di tipo .brute-force. ● Morale della favola: non utilizzate sistemi di cifratura basati sul DES! La Crittografia: evoluzione 3DES ● Evoluzione del DES, è basato su un utilizzo del cifrario DES ripetuto, chiavi di 112 bit. ● Si utilizza la tecnica della codifica-decodifica-codifica (EDE, Encrypt-Decrypt-Encrypt) utilizzando il cifrario DES. La Crittografia: evoluzione Rijndael ● Sviluppato Joan Daemen e Vincent Rijmen. ● Questo algoritmo ha vinto la selezione per l’Advanced Encryption Standard (AES) il 2 Ottobre 2000. Ufficialmente il Rijndael è diventato lo standard per la cifratura del XXI secolo. ● Il cifrario utilizza chiavi di lunghezza variabile 128, 192, 256 bit (gli autori hanno dimostrato come è possibile variare le dimensioni delle chiavi con multipli di 32 bit). Lo schema del Rijndael è stato influenzato dall.algoritmo SQUARE. La Crittografia: evoluzione La crittografia a chiave pubblica ● Utilizza una coppia di chiavi per le operazioni di cifratura (encryption) e decifrazione (decryption). ● Una chiave detta pubblica (public key) viene utilizzata per le operazioni di encryption, mentre l’altra chiave, detta privata (private key), viene utilizzata per le operazioni di decryption. ● A differenza dei cifrari simmetrici non è più presente il problema della trasmissione delle chiavi. ● Sono intrinsecamente sicuri poiché utilizzano tecniche di tipo matematico basate sulla teoria dei numeri, sulla teoria delle curve ellittiche, etc. La Crittografia: evoluzione La nascita dei sistemi PKI ● Dove trovo le chiavi pubbliche dei miei destinatari? ● Creazione di archivi di chiavi pubbliche, i public key server. ● Ma chi mi garantisce la corrispondenza delle chiavi pubbliche con i legittimi proprietari? ● Nascita delle certification authority (CA). ● A questo punto chi garantisce la validità delle certification authority? ● Atto di fede! La Crittografia: evoluzione Il cifrario RSA ● E’ basato su tecniche di teoria dei numeri: prodotto di due numeri primi di dimensioni elevate (ad esempio con 300 cifre decimali). Le chiavi pubbliche e private vengono determinate con il seguente algoritmo: . Si scelgono due numeri primi p e q molto grandi; . Calcolo n= p*q, e la funzione di Eulero Φ(n)= (p-1)*(q-1); . Scelgo un intero e minore di Φ(n) e primo con esso; . Calcolo l’intero d, inverso di e modulo Φ(n) (ossia tale che e*d = k*Φ(n) + 1, con k numero intero); . La chiave pubblica è costituita dalla coppia di valori <e,n>, la chiave privata dai valori <d,n>. ● Le operazioni di encryption e decryption sono: C=Me (mod n) , M=Cd (mod n)=(Me (mod n))d (mod n) dove M= blocco di testo in chiaro, C= crittogramma. ●vantaggio:sicurezza ●svantaggio:velocità minore La Crittografia: evoluzione La firma digitale e le funzioni hash sicure ● Nasce come applicazione dei sistemi a chiave pubblica. ● Viene utilizzata per autenticare la paternità di un documento informatico e la sua integrità. ● Si utilizza un cifrario a chiave pubblica e si .cifra. Un documento (file) con la propria chiave segreta. Chiunque può verificare la paternità del documento utilizzando la chiave pubblica dell’utente firmatario. ● Problema: per l’autenticazione di un documento di grandi dimensioni con un algoritmo a chiave pubblica occorre molto tempo. ● Soluzione: posso autenticare solo un .riassunto. del documento tramite l’utilizzo di una funzione hash sicura. ● Una funzione hash accetta in ingresso un messaggio di lunghezza variabile M e produce in uscita un digest di messaggio H(M) di lunghezza fissa. La Crittografia: evoluzione La crittoanalisi ● La scienza che si occupa dell’analisi e della validità degli algoritmi crittografici. ● Analizzando il contenuto di un testo cifrato, attraverso tecniche statistico/matematiche si possono ottenere informazioni sul testo in chiaro. ● Per fortuna ciò non è sempre possibile, la maggior parte dei cifrari moderni è ancora al sicuro da tecniche di crittoanalisi. Le basi della crittoanalisi ● L’attacco ad un sistema crittografico ha l’obiettivo di forzare il sistema, il metodo scelto e il suo livello di pericolosità dipendono dalle informazioni in possesso del crittoanalista. ● Fondamentalmente esistono queste tipologie di attacchi: . Cipher Text Attack (il crittoanalista è in possesso solo di alcuni crittogrammi) . Known Plain-text Attack (il crittoanalista è venuto a conoscenza di una serie di testi in chiaro e di crittogrammi) . Chosen Plain-Text Attack (il crittoanalista ha scelto una serie di testi in chiaro e di crittogrammi) La Steganografia L’arte di nascondere un messaggio dentro ad un altro. Osservate la seguente immagine: In apparenza vedrete tante immagini di fiori che però viste da lontano oppure ridotte di dimensione vanno a raffigurare l’occhio di una donna che rappresenta il messaggio nascosto. Il principio è lo stesso! La Steganografia Le pagine Web sono arricchite da disegni e fotografie digitalizzate. Possono essere stampate, ma quando sono presenti sul monitor possono essere qualcosa di più... In certi tipi di dati, possono essere nascoste informazioni senza che il dato originale venga apparentemente modificato, in modo da non far sorgere dubbi in chi lo dovesse analizzare. Messaggio + dato di copertura (+ chiave) = dato steganografico La Steganografia Nel campo dell'informatica, due utenti possono utilizzare la steganografia digitale per inviarsi messaggi nascosti all'interno di file di "copertura" (filigrana elettronica), come immagini o altri file multimediali: in questo tipo di file l'alterazione di pochi bit non altera in modo evidente il contenuto. La steganografia, in sé, si basa sul concetto della sicurezza tramite segretezza: cerca di proteggere i dati semplicemente nascondendoli e non proteggendoli "davvero". I sostenitori della steganografia affermano che questa è utile soprattutto quando si vuole avere la possibilità di negare l'esistenza stessa di un'informazione in loro possesso (plausible deniability). La Steganografia Cos’ è l'information hiding ? La Steganografia Steganografia Lingustica – Codice aperto: il messaggio sembra innocente • Mascheratura: circostanze note solo ai recipienti (gergo, mots convenus) • Velatura: solo alcuni caratteri nel testo (acrostici, cronogrammi, griglie) – Semagrammi: dettagli grafici visibili in uno scritto disegno • Lettere abbassate o spaziatura delle lettere • Gli elementi di un disegno contengono il messaggio • Steganografia tecnica – Inchiostri invisibili, micropunti – Congegni meccanici La Steganografia: cenni storici Anche se probabilmente sono gli Egizi ad applicarla per primi nei loro geroglifici di cui tuttora molti sono indecifrati, la steganografia la si fa risalire all'antica Grecia, dove si prefigge di nascondere la comunicazione tra due interlocutori. Essa fu teorizzata dall'abate Tritemio attorno al 1500 nell'omonimo libro proponendosi di inviare messaggi tramite l'uso di linguaggi magici, sistemi di apprendimento accelerato e senza l'utilizzo di simboli o messaggeri. L'opera continuò a circolare in forma di minuta e fu pubblicata postuma nel 1606. La Steganografia: evoluzione Modelli Steganografici: • Steganografia Iniettiva • Steganografia generativa Altri Modelli: • Steganografia sostitutiva • Steganografia selettiva • Steganografia costruttiva La Steganografia: evoluzione Steganografia sostitutiva Rumore Sempre presente - conversione analogica-digitale Influenza i bit meno significativi Inserire il messaggio segreto nei bit meno significativi dopo la conversione Simula il rumore La Steganografia: evoluzione File Bitmap (.BMP) Matrice di pixel in formato RGB, dimensione MxN P. es. a 24 bit per pixel, con tre canali, servono 3xMxN bytes Pixel originario trasmesso: Sostituire i tre bit meno significativi dei canali con tre bit del messaggio: La percezione visiva • non vede molta differenza col colore originario • non sa quale fosse esattamente il colore originario La Steganografia: evoluzione Iniezione di Messaggio – Dimensione del messaggio iniettato: (M x N x 3) / 8 – Esempio: immagine di risoluzione 640 x 480 pixel (640 x 480 x 3) / 8 = 115200 bytes – E’ possibile codificare il messaggio con più bit 2, 3 o 4 bit meno significativi per canale aumento dimensioni del messaggio steganografico aumento del ‘rumore’ percepito – diminuzione della qualità dell’immagine – probabilità di insospettire il ricevente La Steganografia: evoluzione File sonoro (.WAV) Formato 44100 Hz, 16 bit, stereo, durata 1 minuto Generata una stringa di bit ogni 1/44100 secondi La stringa è di 16 bit Sono generate due stringhe di bit Dimensione file contenitore: 44100 x 16 x 2 x 60 = 84762000 bit = 10366 kB Usando i due bit meno significativi, la dimensione massima del messaggio nascosto è: 84762000 x 2 / 16 = 10595250 = 1293 kB La Steganografia: evoluzione File JPEG Compressione 1. Conversione di spazio cromatico: • Immagine convertita da formato RGB a YIQ (o YUV) che consiste in tre piani di colore: luminanza (Y) e due componenti di crominanza (U e V). Opzionale ma permette una migliore qualità di compressione e minor perdita di qualità. 2. Analisi in frequenza: Discrete cosine transform - DCT 3. Quantizzazione 4. Codifica entropica: • Lettura a zig-zag • Run Length Encode – RLE • Compressione basata sul conteggio di caratteri ASCII. • DCMP • Compressione Huffman • Assegna particolari codici, corti, a sequenze di valori più frequenti. La Steganografia: evoluzione File JPEG Non è possibile usare una semplice tecnica sostitutiva La compressione JPG intende preservare le caratteristiche visive dell’immagine e non la sequenza di pixel originaria. Nella compressione JPG viene compiuta una trasformata di Fourier dell’immagine originaria e vengono tagliate le frequenze più basse prima di compiere una trasformata di Fourier inversa. Soluzione: iniettare le informazioni nei coefficienti di Fourier ottenuti nella prima fase della compressione Iniettare le informazioni in un file BMP e poi convertirlo in JPEG? JPEG è un formato ‘lossy’: il messaggio nascosto viene perduto La Steganografia: evoluzione File MP3 Si inserisce il messaggio segreto nella fase di ‘inner loop’: La Steganografia: evoluzione File GIF La Steganografia: evoluzione File GIF – Decrementare il numero di colori della paletta • potenza del 2, inferiore a 256 – risultato: 1/2 o 1/4 della paletta originale • limitare la perdità di qualità • usare algoritmi specifici – Duplicare (o quadruplicare) la paletta risultante • la nuova paletta è di 256 colori • ogni colore ha 2 o 4 entries nella paletta – La scelta della semipaletta determina il bit del messaggio nascosto • P. es. 0 per paletta originaria, 1 per paletta copia – Immagine M x N pixel • messaggio nascosto di almeno M x N / 8 bytes La Steganografia: evoluzione File GIF Osservazioni: – E’ molto facile scoprire la presenza di sottopalette – Altro metodo di staganografia GIF: • le 256 entries della paletta si possono disporre in 256! permutazioni • variando l’ordine delle permutazioni si può codificare un messaggio • dimensione massima: – log2 256! = 1683 bit = 210 bytes – Anche altri formati sono adatti come contenitori • Postscript, PDF, HTML, ecc. La Steganografia: evoluzione File GIF Difetti – Esposizione del contenitore • Non utilizzare file contenitori il cui originale è accessibile • Non riutilizzare lo stesso contenitore per più messaggi • Distruggere il contenitore dopo l’uso – Modelli di rumore • Il messaggio cambia le caratteristiche statistiche del rumore, sostituendosi ad esso • Chi possieda un modello statistico del rumore può accorgersene • Lo scopo è che l’opponente non sospetti neppure la presenza del messaggio nascosto La Steganografia: evoluzione Steganografia Selettiva – Selezionare solo file contenitori che già possiedano una certa proprietà, tra tutti i possibili • P. es. file di dimensione pari codificano uno 0, dispari un 1 • Meglio se molti contenitori piccoli – Il file contiene il messaggio segreto senza essere stato modificato – La banda passante è molto bassa – Poco usata in pratica • Ma: utile per invio password, chiavi, ‘chirp’ La Steganografia: evoluzione Steganografia Costruttiva – Tiene conto di un Modello di Rumore – Il falso rumore introdotto è statisticamente compatibile col modello – Problemi • difficile realizzazione di un modello di rumore • se il modello cade in mano nemica, si possono forse trovare debolezze del modello e sfruttarle La Steganografia: evoluzione Principio di Kerchoff – Il nemico conosce appieno il progetto e l’implementazione del modello di rumore – Il nemico non dispone solo di una chiave segreta • sequenza limitata di bit – Senza la chiave segreta non è deducibile che un canale di comunicazione contenga o meno un messaggio nascosto • Soluzioni: – Cifrare il messaggio segreto prima di iniettarlo nel contenitore – Eliminare ogni ridondanza prima dell’iniezione La Steganografia: evoluzione Sistema Steganografico Ideale La Steganografia: evoluzione File System Steganografico – I file sono organizzati in livelli di sicurezza – Ad ogni livello corrisponde una pass-phrase – Gerarchia lineare • l’accesso al livello n permette l’accesso anche a tutti i livelli inferiori – Senza la pass-phrase non è nota neppure l’esistenza del livello di sicurezza – I livelli di sicurezza massimi sono prefissati – I livelli utilizzati possono essere inferiori al massimo • L’attaccante non sa quanti livelli sono utilizzati La Steganografia: evoluzione Incrementare la sicurezza • Dispersione: Aumentare la dimensione dell’immagine utilizzata come contenitore e inserire i bit del messaggio segreto non modificando tutti i bit meno significativi possibili, ma ad esempio uno ogni dieci. All’aumentare della dimensione dell’immagine rispetto alla dimensione del messaggio segreto diminuisce la probabilità di rilevazione di una distorsione. La Steganografia: evoluzione Incrementare la sicurezza • Crittografia: Utilizzare accorgimenti crittografici che permettano di rendere incomprensibili i messaggi segreti anche se scoperti. Sarà dunque necessaria una chiave per poterli poi decifrare. (vedi principio di Kerchoff che dice che il metodo steganografico è noto dall’attaccante, la sicurezza la porta la chiave segreta) Analisti esperti riconoscono anche la struttura di messaggi cifrati. Esistono programmi (Stealth) in grado di nascondere questa struttura e poi ripristinarla quando richiesto. Applicata questa trasformazione i bit sembrano apparentemente casuali. La Steganografia: evoluzione Incrementare la sicurezza • Permutazioni pseudocasuali: Si indica con M i bit del messaggio e con N quelli che si potrebbero usare nel messaggio contenitore tenendo presente che N>M. Si calcola una permutazione per le posizioni degli M bit disponibili e a partire dal primo bit del messaggio segreto, gli si assegna la prima posizione evidenziata proprio dalla permutazione. Si ha così che il primo bit non finisce più nel primo bit, ma in uno qualunque e così anche per gli altri. Chiaramente è tanto meglio quanto più grande è M. Inoltre è necessario disporre di una chiave per poter in ricezione ricavare il messaggio originario. La Steganografia: evoluzione Steganografia applicata • Vediamo adesso un esempio pratico di cosa nascondere in un'immagine. Prendendo immagini da 24 bit si possono imprimere dei "marchi" di due tipi e più precisamente avremo: – Watermark – Fingerprint La Steganografia: evoluzione Watermark • I Watermark sono un classico esempio dell'utilizzo di informazioni nascoste in un'immagine. • Con il diffondersi dell'utilizzo di Internet, gli autori di documenti digitali (come possono essere ad esempio le immagini) hanno il problema di impedire che qualcuno si impossessi delle loro opere spacciandole per proprie. • I watermark digitali quindi provvedono ad aggiungere delle informazioni dentro il documento in questione in modo tale che, nel caso ne venisse fatta una copia, il legittimo proprietario possa essere univocamente determinato. • Sempre nel caso delle immagini, un modo semplice per creare un watermark può essere quello di creare una seconda immagine che non conterrà altro che il nome del proprietario ripetuto molte volte. • Questa tecnica non viene usata quindi per nascondere un messaggio generico, ma piuttosto per occultare informazioni che vogliamo siano presenti nel documento ma che non siano visibili ad un primo impatto. La Steganografia: evoluzione Fingerprint • I Fingerprint invece sono dei marchi separati che vengono inseriti in diverse copie della stessa immagine per distribuirla a persone diverse. L'effetto è una specie di numero seriale: fa sì che il proprietario possa identificare le persone a cui ha distribuito il suo prodotto nel caso esse lo distribuiscano "gratuitamente" a terzi. • Vediamo adesso alcune debolezze dei marchi e quindi alcuni modi che potrebbero essere utilizzati per renderli inutilizzabili. • Una pratica comune è quella di distribuire il watermark per tutta l'immagine, impedendo in questo modo eventuali attacchi basati sul taglio di una sezione dell'immagine di partenza. Più piccolo è il watermark e più è facile che venga manipolato. La Steganografia: evoluzione Steganalisi Attacchi alle immagini • Attacchi visuali: – Sono in correlazione con le capacità visive umane – Il file stego viene filtrato con un algoritmo (di filtering) dipendente dalla funzione di embedding (inserimento del messaggio nel contenitore) utilizzata per nascondere il messaggio. – L’immagine filtrata viene osservata per determinare se è stato nascosto un messaggio o meno. • Attacchi statistici: – Effettuano test statistici sul file stego. – L’idea dell’attacco statistico è di confrontare la distribuzione di frequenza dei colori di un potenziale file stego con la distribuzione di frequenza teoricamente attesa per un file stego. La Steganografia: evoluzione Formato WAV • LSB: La tecnica utilizzata è quella del bit meno significativo (se si utilizzano più bit diminuisce la qualità dell’operazione). • Esempio: file wave a 44100Hz, 16 bit, stereo: – 44100Hz: Nella trasformazione in digitale viene creata una stringa di 16 bit ogni 1/44100 secondi – Stereo: Le stringhe generate sono due, una per il canale destro e l’altra per quello sinistro. • Dimensione del file: 10366 Kb ossia = 16 bit x 44100 Hz x 60 sec x 2 = 84762000 bit • Capacità disponibile per il segreto: usando i due bit meno significativi: 10595250 bit = 1293 Kb ossia = 84762000 bit /16 bit x 2 • Si aggiunge molto “rumore” di fondo facilmente avvertibile. Per far fronte a questo esiste una tecnica chiamata Echo-data-hiding. La Steganografia: evoluzione Echo data hiding • Se il suono originale e la sua eco sono divisi da uno spazio di tempo abbastanza piccolo, l’orecchio umano non riesce a distinguere i due suoni. I dati vengono codificati in questi eco rappresentando gli 0 e gli 1 come due offset differenti di eco. • In parole povere consiste nell’inserire una pausa all’interno del file (il file potrebbe essere anche un video): – La pausa è cortissima (circa 1ms) impercettibile ai sensi umani – Si ripropone una sorta del codice morse punto linea: • pausa corta = punto • pausa lunga = linea • Questo metodo di steganografia è il metodo (inventato nel 2001) più sicuro in quanto è veramente complicato fare del detecting di pause. Le pause appartengono al file nascosto o sono le pause del video/brano ? • Ottima qualità steganografica, ma scarsa capacità per il contenimento del dato segreto. La Steganografia: evoluzione Formato MP3: tecnica forte • Sfrutta l’Echo-hiding. • L’algoritmo di compressione per generare mp3 è lossy, ovvero comprime i dati in input con perdita di informazione. Per questo motivo, l’embedding ( il nascondere il messaggio segreto nel contenitore) deve essere effettuato nel processo di trasformazione da wav ad mp3. • Teoricamente impossibile da attaccare. La Steganografia: evoluzione Formato MP3: tecnica debole • Anche i file MP3 sono file compressi. Vengono tagliate le frequenze non udibili all’orecchio umano. Per noi tali frequenze sono frequenze vuote, chi ci impedisce di riempirle con dati personali? • La steganografia di file MP3 può avvenire attraverso la codifica di messaggi segreti (file) all’interno di frequenze non udibili. – Un utente non si accorge di nulla ascoltando il brano, ma in realtà assieme al brano ascolta anche il file nascosto. • La steganografia moderna non utilizza tali file. Per l’utente risulta impossibile udire la differenza di suono che vi è tra il file originale e quello steganografato, ma è molto semplice implementare un software in grado di individuare file MP3 contenenti messaggi segreti: – E’ sufficiente implementare un filtro passa banda da 60-20000 hz e tutti quei segnali che cadono fuori sono byte appartenenti al file nascosto. La Steganografia: evoluzione Strumenti • Detecting di immagini steganografate: – File JPEG : StegDetect,StegoWatch, – File GIF : GIFExtract,SysCop – PCX : DiSi-Steganograph, StegoDos • Steganografia: – Jpg : Camouflage, StegHide, OutGuess, Shadow-Jpeg, Jpeg-jsteg, SecureEngine, Jpegx, InThePicture – Gif: Camouflage,appendx, EZStego, Hide and Seek, Gifshuffle, S-Tools-4, Cameleon, TheThirdEye – Bmp: Camouflage, StegHide, Hide-inpicture, WbStego, InvisibleSecrets, Courier,Xidie, Hide4PgP – WAV: Camouflage, StegHide, WeavWav,MP3Stego • Steganografia generativa: – Texto – Stego • Altri: – S-Tools (LSB), WinGIMP (plugin per GIMP) – Psteg (permutazioni pseudocasuali) Cooperazione tra crittografia e steganografia Crittografia Steganografia Implementazione del software Ancient Simulator Questo primo software richiama metodi storici di crittografia : 1. Cesare 2. Enigma Implementazione del software Ancient Simulator Digitando 1 si esegue Cesare che è una funzione scritta in C++ che critta un testo dato da tastiera secondo il cifrario di Cesare. 1. Viene inserito il testo da crittare (evitando gli spazi o sostituendoli con dei trattini) 2. Va impostata la chiave che è un numero (anche un numero negativo è ammissibile). 3. Il testo viene crittato traslando le lettere dell’alfabeto di una quantità costante pari alla chiave Implementazione del software Ancient Simulator Digitando 2 si esegue Enigma che è una funzione in C++ che simula in maniera piuttosto semplificata il funzionamento di Enigma a tre rotori. I tre rotori presentano permutazioni dell’alfabeto simili a quelle utilizzate nei rotori tedeschi. 1. Viene inserito il testo da crittare. 2. I rotori vengono inizializzati automaticamente e si avvia la crittografia. 3. Il testo viene crittato. Implementazione del software Ancient Simulator Il funzionamento si basa sull’utilizzo di cilindri ( rotori): ognuno presenta una permutazione dell’alfabeto a 26 lettere. I rotori girano attorno ad un asse: questo permette che ogni lettera immessa venga cifrata con un alfabeto diverso. Una macchina cifrante ad un rotore solo ripete il suo schema di crittografia ogni 26 lettere e si dice dunque che il suo periodo T sarà uguale a 26. Se però i rotori sono due il periodo diventerà 26*26 ovvero 262 = 676 lettere prima che il testo venga cifrato con lo stesso schema. Possiamo dunque dire che la sicurezza aumenta esponenzialmente con l’aumentare dei rotori e il periodo T di una macchina a n rotori è dato da 26n. Il settaggio iniziale può essere uno qualunque. char Rotore_1[27] = "ZYXWVUTSRQPOMNLKJIHGFEDCBA"; // Alfabeto al contrario char Rotore_2[27] = "BADCFEHGJILKNMPORQTSVUXWZY"; // Alfabeto scambiato char Rotore_3[27] = "FGHIJABCDEPQRSTKLMNOXYZUVW"; // Blocchi di 5 // Definisci gli operatori per i rotori char Codifica1(char Input) { // Conversione attraverso "i" return Rotore_1[(i + Input - 'A') - ((i + Input - 'A') / 26 * 26 )]; } Steganocrypt Simulator Il secondo software è stato implementato su calcolatore mediante la realizzazione di un programma in C# , che è dotato di orientazione agli oggetti . Esso consente di aaggiungere la crittografia alla steganografia. Implementazione del software Il C# (si pronuncia C sharp, sharp in inglese significa "in gamba" o più semplicemente diesis) è un linguaggio di programmazione object-oriented sviluppato da Microsoft all'interno dell'iniziativa .NET, e successivamente approvato come standard ECMA. La sintassi del C# prende spunto da quella del Delphi (hanno il medesimo autore), del C++, da quella di Java ed a Visual Basic per gli strumenti di programmazione visuale e per la sua semplicità (meno simbolismo rispetto a C++, meno elementi decorativi rispetto a Java). Il C# è, in un certo senso, il linguaggio che meglio degli altri descrive le linee guida sulle quali ogni programma .NET gira; questo linguaggio è stato infatti creato da Microsoft specificatamente per la programmazione nel Framework .NET. I suoi tipi di dati "primitivi" hanno una corrispondenza univoca con i tipi .NET e molte delle sue astrazioni, come classi, interfacce, delegati ed eccezioni, espongono esplicitamente caratteristiche proprie del .NET framework. Implementazione del software Osservazioni: Durante i processi di stegoanalisi, spesso si cerca di determinare in un’immagine le aree colorate con un unico colore o poche tonalità. Escluse queste si individuano le regioni con variazioni di bit maggiori, perché in esse è maggiormente probabile che siano nascosti dei messaggi perché più difficili da individuare. Guardate quest’immagine: -Il cielo blu sulle montagne non dovrebbe contenere dati nascosti perché di variazioni non ce ne sono. -Se sono presenti sulle montagne al massimo può essere stato cambiato un bit per pixel, mentre al contrario nelle zone oscure degli alberi possono essere nascosti tanti bit per pixel appartenenti a dati diversi dall’immagine. Implementazione del software I luoghi dove è più di difficile individuare bit nascosti sono i seguenti: -Questo è uno dei motivi per cui durante la simulazione utilizzeremo un’immagine particolare. Implementazione del software Simulazione n1. Se vogliamo semplicemente nascondere dei dati in un immagine e trasmetterli, abbiamo bisogno di un’immagine bitmap contenitore, di una password associatole per l’accesso e di un messaggio segreto. 1. Apertura dell’immagine (.bmp) e salvataggio. 2. Impostazione password. 3. Immissione del testo. Implementazione del software Simulazione n1. -Simuliamo un attacco ad una base segreta terroristica! -Supponiamo di aver scelto un’immagine di Spiderman, la password rx78 ed il messaggio (“Attaccate la base nemica!”). -Sembrerebbe che due appassionati di film si stiano scambiando delle immagini via mail, ma in realtà non è così! Sono uno un comandante e l’altro un soldato distanti migliaia di km. 4. Cliccando su next abbiamo la possibilità di selezionare i poligoni dell’immagine dove nascondere il messaggio segreto. Implementazione del software Simulazione n1. -Il messaggio lo ripartiamo nei byte dell’area selezionata. 5. Ogni poligono selezionato può essere chiuso mediante un double-click. -Le regioni vengono visualizzate istantaneamente. 6. Nascondiamo 8 bit per ogni pixel in modo da far variare le tonalità dell’immagine originaria il più possibile. 7. La dimensione del messaggio deve coincidere con la somma delle quantità di dati da nascondere per ogni byte per tutte le regioni 8. Clicchiamo su next. -Questa variazione risulterà impercettibile ad un comune essere umano, ma non per un software tecnologicamente avanzato. Implementazione del software Simulazione n1. 9. Quindi viene creata con successo una mappa contenente le diverse regioni selezionate. -Essa viene memorizzata nei primi pixel dell’immagine in modo da essere estratta prima del resto del messaggio come header. -L’header di ogni regione contiene : Lunghezza Capacità Numero di bit usati Regione Indice del primo pixel di ogni regione Implementazione del software Simulazione n1. -Se non ci sono abbastanza pixel tra il primo pixel dell’immagine e l’inizio del primo della regione dove si nasconde l’header, vengono visualizzati gli opportuni messaggi errore. -Lo stesso vale anche per il messagio nascosto all’interno della regione che deve essere abbastanza grande da poterlo contenere. -A questo punto il messaggio e la mappa vengono nascosti. Implementazione del software Simulazione n1. Modalità adottata per nascondere i byte: -Quando verrà estratto il messaggio, il seme utilizzato per inizializzare il distributore casuale di bit sarà lo stesso (un valore della chiave). -Per calcolare gli intervalli, sono necessari la lunghezza dei dati da nascondere (o estrarre) ed il conteggio dei pixel rimanenti. Implementazione del software Simulazione n1. -Dall’immagine modificata vogliamo leggere il messaggio nascosto utilizzando le informazioni precedentemente memorizzate (la lunghezza degli dati, l’indice del pixel della regione più in alto e delle altre regioni e così via). 10. Immettiamo la password (in questo caso rx78). 11. Selezioniamo Text in modo da indicare che il messaggio da estrarre non lo vogliamo salvare su file, ma visualizzarlo immediatamente. 12. Clicchiamo su next. Implementazione del software Simulazione n1. -Ricostruita la mappa, vengono ricostruite anche le regioni dove il messaggio è stato nascosto. -E’ necessario conoscere il numero dei byte in ogni regione e quanti bit per pixel devono essere estratti dai pixel. 13. Eseguiti questi task può essere visualizzato il messaggio in chiaro e le regioni da cui viene letto. Il soldato riceve il messaggio ed avvia i preparativi per entrare in azione. La situazione può evolversi ulteriormente! Implementazione del software Simulazione n2. -Simuliamo l’intercettazione del messaggio e la cifratura Il nemico, avendo adottato un software di controllo delle mail di tutti i suoi impiegati riesce ad intercettare il messaggio mediante stegoanalisi e cerca di sfruttarlo a proprio vantaggio. Infatti prepara una trappola ai soldati dell’esercito. Un altro agente segreto dell’esercito comprende la situazione e riutilizza un’altra casella di posta elettronica per trasmettere di fermare l’attacco, cifrando però il messaggio con un software di crittografia. In tale modo anche se cadesse in mani nemiche, non riuscirebbero a decifrarlo! Per impedire anche questa possibilità utilizza un’altra immagine ed una chiave memorizzata su file. Implementazione del software Simulazione n2. 1. Anzitutto si procede con la scrittura ed il salvataggio del messaggio in un file che viene crittato. Questo viene effettuato cliccando sul pannello principale Crypt, aprendo il file originale e indicando la directory dove salvare il file crittato. 2. Si clicca su Encrypt, dopo aver specificato un ulteriore parametro di crittografia , la cui somma con quello in fase di decrittografia deve dare 0. Questo aggiunge ulteriore imprevedibilità al testo cifrato la cui cifratura si basa su tabelle di codici. Una tabella codici è un elenco di codici di caratteri selezionati, ossia caratteri rappresentati come punti di codice, in un determinato ordine. Le tabelle codici vengono definite in genere per supportare lingue o gruppi di lingue specifici che condividono sistemi di scrittura. In questo caso il testo viene convertito in intero, ad esso viene sommato il parametro e viene ritrasformato in stringa. Implementazione del software Simulazione n2. 2. Poi all’immagine contenitore viene associato un file contenente una chiave d’accesso (Key File). 3. Il file viene aperto selezionando Message File e cliccando su Browse ed è quello precedentemente crittato. -Successivamente il messaggio crittato viene memorizzato all’interno dell’immagine. Implementazione del software Simulazione n2. 4. Vengono definite le regioni, stavolta più ampie in modo da distribuire più uniformemente i dati nascosti. 5. Si clicca su next. Il tipo di immagine scelta aggiunge un’ulteriore vantaggio. La variazione delle tonalità e i chiaro-scuri rendono molto più difficoltosa l’individuazione di un messaggio nascosto. Implementazione del software Simulazione n2. 6. Il messaggio crittato viene estratto su di un file dopo aver selezionato l’immagine da aprire ed il file dove salvare il messaggio crittato. Implementazione del software Simulazione n2. 7. Il file crittato viene decrittato. Il comandante lo decritta. Immediatamente da ordine alla forza armata esterna di fermarsi, e si avvia verso lo studio di una nuova strategia. Conclusioni Realizzazione della Steganocrittografia Implementazione del software Validazione mediante simulazioni Valutazione degli effetti Approfondimenti futuri Sviluppi futuri TECNOLOGIE MILITARI Gli Stealth possono essere pilotati unendo al pilota automatico sistemi di controllo esterni (radiocomando). Considerando le loro potenzialità belliche diventa rilevante evitare infiltraggi durante tale procedura mediante sistemi di crittografia avanzata. Sviluppi futuri ROBOTICA Protezione e cifratura di reti small-world fra robot durante l’esplorazione di territori sconosciuti o inospitali per l’uomo . Sviluppi futuri INFORMATICA MEDICA -Biometria -Stegano-crittografia del DNA -Sistemi neurali Fine: La storia ci insegna che nulla rimane per troppo tempo