1 Introduzione

La steganografia è una tecnica di sicurezza che viene di solito confusa con quella della crittografia. In realtà esiste una differenza ben precisa tra i due concetti.

Lo scopo della crittografia è quello di nascondere il contenuto di un messaggio, mentre la steganografia si prefigge di nasconderne l’esistenza. Essa nasce perché in molte situazioni il solo uso della crittografia non è sufficiente. Si pensi ad esempio ad un soldato che viene sorpreso a scambiare messaggi cifrati con un governo ostile: indipendentemente dal contenuto del messaggio, il solo fatto che vengono scambiati messaggi cifrati desta ovvi sospetti. Inoltre le restrizioni applicate dai vari governi ai sistemi crittografici hanno indotto a studiare metodi alternativi per lo scambio di messaggi privati, tra cui la stessa steganografia.

Lo studio di questa materia nella letteratura scientifica si deve a Simmons che nel 1983 formulò il “Problema dei prigionieri”. In questo scenario Alice e Bob sono in prigione e devono escogitare un piano per fuggire: tutti i loro messaggi vengono scambiati tramite il guardiano Willie. Se Willie scopre che essi si scambiano messaggi cifrati metterà uno di loro in isolamento ed il piano fallirà. Quindi essi devono trovare un metodo per nascondere il loro testo cifrato in un testo apparentemente innocuo.

2 Breve Storia della steganografia     

La steganografia oggi è utilizzata frequentemente per mandare messaggi segreti via internet. Tuttavia le sue origini non sono affatto recenti.

La parola steganografia deriva dall'unione dei due vocaboli greci stèganos  (nascosto) e gràfein (scrivere) ovvero scrittura nascosta o meglio ancora l'insieme delle tecniche che consente a due o più persone di comunicare in modo tale da nascondere l'esistenza della comunicazione agli occhi di un eventuale osservatore, tradizionalmente denominato "nemico" .

Il primo esempio di questa tecnica risale all'epoca dell'impero persiano.

2.1 Storia di Erodoto

Erodoto, infatti, racconta la storia di un nobile persiano che fece tagliare a zero i capelli di uno schiavo fidato al fine di poter tatuare un messaggio sul suo cranio; una volta che i capelli furono ricresciuti, inviò lo schiavo alla sua destinazione, con la sola istruzione di tagliarseli nuovamente. 

 

2.2 Griglie di Cardano         

Le griglie di Cardano che erano fogli di materiale rigido nei quali venivano ritagliati fori rettangolari ad intervalli irregolari. Questa griglia veniva appoggiata su un foglio di carta bianca, il messaggio segreto veniva scritto nei buchi (ciascun buco poteva contenere una o più lettere), dopodiché si toglieva la griglia e si cercava di completare la scrittura del resto del foglio in modo da ottenere un messaggio di senso compiuto, il quale poi veniva inviato a destinazione. Per poter leggere il testo nascosto si doveva applicare sul messaggio ricevuto una copia esatta della griglia originaria 

 

2.3 Cifre Nulle          

Quella delle cifre nulle era un'altra tecnica steganografica che consisteva nell'inserire il messaggio nascosto in un altro messaggio di testo. Fu usata nella seconda guerra mondiale, in particolare per comunicazioni via radio. I messaggi trasmessi venivano registrati e poi filtrati in modo opportuno per ricavare il messaggio nascosto.

Tecnicamente il messaggio trasmesso veniva composto in modo tale che, unendo le prime lettere di ogni capoverso o con altre tecniche, si ottiene un messaggio di senso compiuto. Il seguente, ad esempio, è un testo realmente inviato da una spia tedesca durante la seconda guerra mondiale:

Apparently neutral's protest is thoroughly discounted and ignored.
Isman hard hit. Blockade issue affects pretext for embargo on by products, ejecting suets and vegetable oils.
 
Considerando in sequenza la seconda lettera di ogni parola, si ottiene il messaggio:
 
Pershing sails from NY June 1  
 
Anche se in realtà c'è una "r" di troppo.
 

 

2.4 Gli Inchiostri Invisibili  

Gli inchiostri invisibili (o inchiostri simpatici) sono sostanze che, in condizioni normali, non lasciano tracce visibili se usate per scrivere su un foglio di carta, ma diventano visibili se il foglio viene sottoposto a una fonte di calore. 

Gli inchiostri usati vanno da sostanze di uso comune come succo di limone, aceto, latte, fino a sostanze più complicate come l'inchiostro a cobalto, utilizzato durante la seconda guerra mondiale, che può essere reso visibile solo mediante l'uso di particolari reagenti chimici. 

Con l'utilizzo di queste sostanze è possibile scrivere il messaggio segreto negli spazi compresi tra le righe di un messaggio dall'aspetto "innocuo", quest'ultimo scritto con un inchiostro normale. (Per accedere al messaggio segreto occorre letteralmente "saper leggere tra le righe"...).

 

2.5 Tecnica dei Micropunti

La tecnica dei micropunti fotografici fu inventata dal direttore del F.B.I. durante la seconda guerra mondiale, si tratta di fotografie della dimensione di un punto dattiloscritto che, una volta sviluppate e ingrandite, possono diventare pagine stampate di buona qualità.

 

3 Modelli steganografici          

Caratteristica della steganografia, come si è detto, è l'esistenza di due messaggi: il primo, detto messaggio contenitore, è facilmente percepibile ed ha il compito di nascondere il secondo, detto messaggio segreto, racchiudendolo al suo interno e rendendolo quindi invisibile o, più correttamente, difficilmente percepibile.

I principi che stanno alla base dei software steganografici sono sempre gli stessi. Tuttavia esistono diversi approcci che fanno individuare varie famiglie di software.

In base all'origine del file contenitore possiamo distinguere software di steganografia iniettiva e software di steganografia generativa.

 

 

3.1 Steganografia Iniettiva

La prima categoria è senz'altro la più numerosa. I software di questo tipo consentono di "iniettare" il messaggio segreto all'interno di un messaggio contenitore già esistente modificandolo in modo tale sia da contenere il messaggio, sia da risultare, al livello al quale viene percepito dai sensi umani, praticamente indistinguibile dall'originale.

 

 

 

Figura 1: Schema steganografia iniettiva

 

3.2 Steganografia Generativa

Nei software di tipo generativo, invece, si parte dal messaggio segreto per produrre un opportuno contenitore atto a nascondere nel migliore dei modi quel determinato messaggio segreto.

Secondo un diverso sistema di classificazione le tecniche steganografiche possono essere ripartite in tre classi: steganografia sostitutiva, steganografia selettiva e steganografia costruttiva.


 

 

Figura 2: Schema steganografia generativa

 

3.3 Steganografia Sostitutiva

È senz'altro la tecnica steganografica più diffusa, tanto che spesso quando si parla di steganografia ci si riferisce implicitamente a quella di questo tipo. Alla base di questa tecnica c'è un'osservazione: la maggior parte dei canali di comunicazione (linee telefoniche, trasmissioni radio, ecc.) trasmettono segnali che sono sempre accompagnati da qualche tipo di rumore. 

Questo rumore può essere sostituito da un segnale - il messaggio segreto - che è stato trasformato in modo tale che, a meno di conoscere una chiave segreta, è indistinguibile dal rumore vero e proprio, e quindi può essere trasmesso senza destare sospetti. 

Quasi tutti i programmi si basano su questa idea, sfruttando la grande diffusione di file contenenti una codifica digitale di immagini, animazioni e suoni; spesso questi file sono ottenuti da un processo di conversione analogico/digitale e contengono qualche tipo di rumore. Per esempio, uno scanner può essere visto come uno strumento di misura più o meno preciso. 

Un'immagine prodotta da uno scanner, da questo punto di vista, è il risultato di una specifica misura e come tale è soggetta a essere affetta da errore. Lo stesso discorso lo si può fare analogamente per un file sonoro che evidentemente è stato acquisito tramite una scheda sonora. 

La tecnica impiegata nella maggior parte dei programmi è concettualmente molto semplice: sostituire i bit meno significativi dei file digitalizzati con i bit che costituiscono il file segreto (i bit meno significativi, infatti, corrispondono ai valori meno significativi, importanti ed evidenti di una misura, cioè proprio quelli che possono essere facilmente affetti da errore!)

Quello che succede quindi è che il file contenitore risultante, dopo un'iniezione steganografica, si presenta in tutto e per tutto simile all’originale, con differenze difficilmente percettibili e quindi, a meno di confronti approfonditi con il file originale (comunque non effettuabili ad occhio nudo) è difficile dire se le eventuali perdite di qualità siano da imputare al rumore od alla presenza di un messaggio segreto steganografato. Inoltre il più delle volte il file originale non è disponibile e quindi effettuare questo confronto è pressoché impossibile.

 

3.3.1 Steganografia Sostitutiva con file Bitmap e File Wav

Supponiamo di voler utilizzare come contenitore un file di tipo bitmap (bmp) con una profondità di colore a 24 bit (224=16777216 colori possibili).

Un immagine, dal punto di vista digitale, non è altro che una matrice MxN di piccoli punti colorati detti pixel. Un file grafico di tipo bitmap a 24 bit è codificato in modalità RGB, pixel per pixel. Questo significa che ogni singolo pixel viene codificato tramite 3 byte in sequenza, ognuno dei quali rappresenta i livelli (da 0 a 255) dei colori primari, cioè rosso (Red), verde (Green) e blu (Blue) che costituiscono il colore di quel determinato pixel. Questo significa che, per fare un esempio, un file bitmap a 24 bit di dimensioni 640x480 occuperà uno spazio di 640x480x3=921600 byte. Un'operazione di steganografia sostitutiva su questi tipi di file consiste nel sostituire i bit meno significativi dei singoli byte con quelli del messaggio segreto. Cioè, se ad esempio, abbiamo un pixel codificato in questo modo:

11100001             00000100             00010111

possiamo inserire tre bit del messaggio segreto. Se ad esempio i bit del messaggio segreto sono 110 il nostro pixel diventerà il seguente:

11100001             00000101             00010110

e operazioni che si fanno su ogni singolo byte quindi possono essere tre:

1)     Lo si lascia invariato

2)     Gli si aggiunge 1

3)     Gli si sottrae 1


Questo fa sì che ad occhio nudo le variazioni di colore siano praticamente impercettibili.

Per meglio renderci conto abbiamo effettuato un esperimento. Preso un file bitmap di dimensioni 800x540, ne abbiamo fatto una copia ed abbiamo iniettato in essa un file di 157 kb utilizzando Steganos 3 Security Suite. Poi abbiamo osservato con un editor esadecimale le differenze fra il file originale e la copia contenente il nostro file nascosto. Ecco il risultato su una parte del file:

 

              

Figura 3: Una parte del file originale                                   Figura 4: La stessa parte col messaggio nascosto

Facendo qualche calcolo, per inserire un byte del messaggio segreto occorrono ovviamente 8 byte del messaggio contenitore. Generalizzando, volendo calcolare la massima dimensione di un messaggio segreto che può stare all'interno di un file grafico MxN si può usare la seguente formula:

Dimensione messaggio segreto (in byte) = (M x N x 3) / 8

Quindi, tornando al nostro file bitmap 800 x 540, esso avrebbe potuto contenere al massimo (800 x 540 x 3) / 8 = 162000 byte di dati; infatti nel precedente esperimento abbiamo potuto iniettare senza problemi un file di 157 Kb = 160768 byte, ma sarebbe stato impossibile iniettarne uno di soli 2 kb più grande. Un formato tipico, come il 640 x 480, potrà contenere invece un messaggio segreto di (640 x 480 x 3) / 8 = 115200 byte.

Tuttavia è possibile raddoppiare o addirittura triplicare o quadruplicare la possibile dimensione del messaggio segreto utilizzando non più il singolo bit meno significativo di ogni byte, ma i due, tre o quattro bit meno significativi. L’altra faccia della medaglia sarà ovviamente una diminuzione della qualità dell’immagine e quindi si può dire che più bit si usano, maggiore è la possibilità di destare sospetti. Quindi quello che si può fare è controllare ogni volta il risultato e decidere di conseguenza quanti bit utilizzare a seconda di quanto è visibile la perdita di qualità. Alcuni software, ad esempio, testano che la differenza di luminosità tra un pixel e quelli che lo circondano non sia troppo alta.

Un discorso analogo lo si può fare per i file sonori di tipo wav. Questo formato si basa anch'esso su sequenze di parole di 8 o 16 bit.

Un file wav mono, campionato a 44100 Hz a 16 bit, per esempio, indica un file che è stato costruito ottenendo 44100 stringhe di 16 bit al secondo nella fase di digitalizzazione del suono, ossia è stata generata una stringa di 16 bit ogni 1/44100 di secondo. Nel caso di un wav stereo, le stringhe di 16 bit ottenute sono due, una per il canale destro ed una per il sinistro. E' facile capire che anche qui, con la stessa logica di prima, si possono sostituire i bit meno significativi allo scopo di steganografare un messaggio. Tanto per avere un'idea, un file wav stereo di un minuto è grande 16 bit x 44100 Hz x 60 sec = 42336000 bit = 5168 Kb ca. da raddoppiare perché il file è stereo, quindi 10336 Kb. Se decidessimo di utilizzare i 2 bit meno significativi per ogni stringa di 16 bit otterremmo una disponibilità di 84762000 bit / 16 bit x 2 = 10595250 bit = 1293 Kb ca.

Figura 5: File wav originale

Figura 6: Lo stesso file wav con iniezione di un file di testo di 128 kb

 

 3.3.2 Formati Compressi

In base a quanto si è detto, tutto sembra funzionare perfettamente, ma c'è un problema intrinseco nell'operare nel modo sopra esposto. Il problema risiede proprio nel formato del file contenitore utilizzato. I formati bitmap e wav, infatti, sono formati abbastanza pesanti ed ingombranti come si è visto e proprio per questo non sono molto popolari sulla rete Internet, quindi il solo fatto di scambiare un file bitmap o wav potrebbe destare sospetti. Ecco perché, sulla base del concetto originario, si sono escogitate altre tecniche steganografiche da attuare anche sui formati di file più comuni in Internet. Tuttavia si sono dovute trovare delle soluzioni alternative.

In particolare, non è possibile operare come sinora descritto con i file compressi. Se iniettassimo delle informazioni in un file bitmap e dopo lo convertissimo in JPEG, ad esempio, le informazioni andrebbero inevitabilmente perse. La compressione JPEG, infatti, ha la tendenza a preservare le caratteristiche visive dell'immagine piuttosto che l'esatta informazione contenuta nella sequenza di pixel, di conseguenza sarebbe impossibile risalire al file bitmap originario. 

Quello che si fa in questi casi è operare ad un livello di rappresentazione intermedio. Per poter utilizzare anche le immagini JPEG come contenitori, è possibile iniettare le informazioni nei coefficienti di Fourier ottenuti dalla prima fase di compressione.

Un discorso analogo si può fare col popolare formato audio MP3. Questo formato, al fine di comprimere, durante la fase detta Inner loop allarga gli intervalli di prelevamento del campione e testa se il livello di distorsione introdotto è superiore ad un certo limite definito da un modello psicoacustico. In questa fase, quindi, si individueranno i bit più importanti e quelli meno importanti e quindi utilizzabili potenzialmente per nascondere informazioni.

Il problema principale della steganografia che usa file compressi come contenitori è che, purtroppo, è facilmente attaccabile, nel senso che se un file compresso che fa da contenitore viene decompresso e compresso nuovamente, è facile capire che il messaggio nascosto andrà perso.

 

3.3.3 Formato Gif

Questo formato merita un discorso a parte perché per raggiungere lo scopo di trasformarlo in messaggio contenitore, si utilizza un approccio un po' diverso dai precedenti. Il formato GIF fa uso di una palette di colori, cioè un sottoinsieme di colori prestabilito. I pixel che formano l’immagine possono assumere uno dei colori della palette. 

Questo si traduce in una grossa economia di rappresentazione del file visto che ogni pixel può essere rappresentato semplicemente da un puntatore ad un colore della palette. Un caso tipico è quello delle GIF a 256 colori. Nel momento in cui un'immagine è acquisita da uno scanner contiene sicuramente un numero maggiore di 256 colori. 

Tuttavia esistono alcuni algoritmi capaci di diminuire il numero di colori utilizzati limitando il più possibile la perdita di qualità. La soluzione che viene di solito adottata dunque è la seguente: si acquisisce un'immagine dopodiché si limita il numero di colori ad un numero inferiore a 256 utilizzando uno degli algoritmi suddetti. Dopodiché si converte in GIF riempiendo la palette con dei colori molto simili a quelli rimasti. Questo significa che ogni volta che si dovrà rappresentare un colore si potrà scegliere di rappresentarlo in due modi: con il colore originale oppure con il colore aggiunto simile all'originale. 

Quindi c'è una possibilità di scelta e tutte le volte che c'è possibilità di scelta fra più alternative si ha la possibilità di nascondere un'informazione, è uno dei principi fondamentali della steganografia. Se le alternative sono due potremo nascondere un bit (se il bit è 0, scegliamo la prima, se è 1 la seconda); se le alternative sono quattro potremo nascondere due bit (00 per la prima, 01 per la seconda, 10 per la terza, 11 per la quarta) e così via.

La soluzione esposta è senz’altro molto ingegnosa, ma presenta un problema: è molto semplice scrivere un programma che analizzi la palette ed individui sottoinsiemi di colori simili e quindi la probabile presenza di un messaggio steganografato. In effetti, questo tipo di attacco è stato portato a termine con pieno successo da diversi steganalisti, tanto che alcuni di loro hanno sostenuto che il formato GIF non fosse adatto alla steganografia. In realtà esiste un altro metodo per steganografare con GIF che si basa sulla seguente osservazione: un immagine GIF può essere rappresentata in 256! modi diversi. 

Come si è detto infatti, la palette che sta alla base di una GIF si compone di 256 colori, tuttavia non è importante l’ordine in cui i colori compaiono nella palette e quindi i 256 colori di una palette possono essere permutati in 256! modi, ciò vuol dire che una stessa immagine GIF può essere rappresentata in 256! modi diversi, a patto di cambiare opportunamente la sequenza dei puntatori. Ancora una volta ci troviamo di fronte a delle alternative. Poiché le alternative sono 256!, ciò significa che potremo codificare log(256!) = 1683 bit, e questo indipendentemente dalle dimensioni dell’immagine. Basta semplicemente permutare in modo opportuno la palette.

 

3.3.4 Altri Formati

Come è facile intuire, partendo dai concetti di base della steganografia è facile estendere queste tecniche ai più svariati formati. 

Oltre a numerosi applicativi per i formati più comuni già descritti, come Steganos per BMP e WAV, Jstegshell e JP Hide and Seek per JPEG, Mp3Stego per MP3, Gifitup e Gifshuffle per GIF, in rete è possibile trovare tools steganografici per i formati più vari. In particolare esistono programmi come wbStego, capaci di utilizzare PDF e HTML, o ancora Datamark Technologies, che può utilizzare MID, AVI o MPEG.

 

3.4 Steganografia e Sicurezza

Per quanto riguarda il discorso sicurezza, generalmente tutte le norme che valgono per i programmi di crittografia dovrebbero essere utilizzate per i programmi steganografici. Ci sono comunque dei semplici principi a cui attenersi. Innanzitutto non bisogna mai usare file pubblici o facilmente accessibili, quindi noti, perché ciò darebbe più possibilità all’attaccante di scorgere la presenza di un messaggio steganografato. Inoltre non bisogna mai usare più volte lo stesso file come contenitore (l'ideale sarebbe generarne ogni volta uno nuovo mediante scanner (nel caso di un file grafico) o convertitore analogico/digitale (nel caso di un file sonoro) e distruggere gli originali dopo averli usati).

Tuttavia, il principale difetto della steganografia sostitutiva è che le sostituzioni possono alterare le caratteristiche statistiche del rumore nel media utilizzato. Se il nemico, infatti, possiede un modello del rumore, può utilizzarlo per testare se i file sono conformi al modello; se non lo sono probabilmente si è in presenza di un messaggio steganografato. Il problema di questo tipo di attacco però sta nella difficoltà di costruire un modello che tenga conto di tutti i possibili errori o rumori. In casi molto specifici comunque questo tipo di attacco ha avuto buon successo e la steganografia selettiva e costruttiva hanno proprio lo scopo di evitarlo.

 

3.5 Steganografia Selettiva

La steganografia selettiva ha valore puramente teorico e non viene utilizzato in pratica. Essa si basa sull’idea di procedere per tentativi fino a quando non si verifica una certa condizione. Per esempio, si fissi una semplice funzione hash che vale 1 se il file contenitore contiene un numero dispari di bit 1 e 0 se ne contiene un numero pari. A questo punto volendo codificare il bit 0, acquisiremo un'immagine (o un file sonoro) e controlleremo se il numero di bit 1 è pari. Se lo è avremo trovato un file adatto a contenere l'informazione che vogliamo codificare, altrimenti provvederemo ad acquisire un'altra immagine. 

 

Questa tecnica ha il vantaggio che l'immagine ottenuta contiene effettivamente il messaggio segreto, ma non è stata modificata. È ovvio che sul piano pratico questa soluzione è inaccettabile perché è molto dispendiosa in termini di tempo ed oltretutto permette di nascondere una quantità d'informazione molto modesta.

 

 

3.6 Steganografia Costruttiva 

La steganografia costruttiva, opera più o meno come la steganografia sostitutiva, con la differenza che nel modificare il file contenitore si tiene conto di un modello di rumore, nel senso che si tenta di sostituire il rumore presente nel media utilizzato con il messaggio segreto nel rispetto delle caratteristiche statistiche del rumore originale. Quest'approccio sembra la soluzione migliore, ma in realtà anch'esso non è esente da difetti. 

Come si è già detto non è facile costruire un modello del rumore, ed anche se lo si costruisce è possibile che qualcun altro abbia costruito un modello più accurato e quindi in grado di scorgere comunque la presenza di un messaggio segreto. Inoltre se il modello utilizzato cadesse nelle mani del nemico, egli lo potrebbe analizzare per cercarne i punti deboli. In questo modo si regalerebbe involontariamente al nemico uno strumento di attacco molto efficace.

 

 

4 Sistema Steganografico ideale

 

A causa dei suddetti problemi, la tecnica iniettiva rimane la più conveniente da usare.  Se si hanno particolari esigenze di sicurezza, si può pensare di usare contenitori molto più grandi rispetto al messaggio segreto. In questo modo il messaggio contenitore verrà modificato sono lievemente in modo da rendere impossibile la rilevazione di un messaggio nascosto.

 

Tuttavia rimane un problema ancora da risolvere. In ambito crittografico il principio di Kerckhoff recita così: la sicurezza del sistema deve basarsi sull'ipotesi che il nemico abbia piena conoscenza dei dettagli di progetto e implementazione del sistema stesso; la sola informazione di cui il nemico non può disporre è una sequenza (corta) di numeri casuali - la chiave segreta - senza la quale, osservando un canale di comunicazione, non deve avere neanche la più piccola possibilità di verificare che è in corso una comunicazione nascosta.

È facile capire che, volendo aderire a questo principio, le tecniche esposte sono insufficienti. Infatti se i dettagli dell’algoritmo utilizzato sono resi pubblici, chiunque è in grado di accedere ad eventuali informazioni nascoste, semplicemente applicando il procedimento inverso.

Ecco perché si rende necessaria una fase di preelaborazione del messaggio segreto. La soluzione più ovvia è quella di crittografare il messaggio segreto prima di iniettarlo. Così facendo il problema però non è del tutto risolto, poiché il file cifrato può comunque essere estratto da chiunque e si presume che un crittoanalista esperto possa riconoscere un file prodotto da un programma di crittografia convenzionale. A questo punto il sistema steganografico fallisce. Mentre il fallimento di un sistema crittografico è decretato dalla lettura del messaggio cifrato da parte del nemico, un sistema steganografico si può decretare fallito quando ci si accorge della sola presenza di un messaggio nascosto. La soluzione, quindi, è quella di camuffare il messaggio cifrato prima di iniettarlo in modo che risulti indistinguibile da semplice rumore. Per esempio, se un messaggio è stato cifrato con PGP, il file cifrato rispetterà un particolare formato contenente, oltre al blocco di dati cifrati, altri dati per lo più ridondanti che facilitano la gestione del file da parte di PGP. Esistono programmi come Stealth capaci di eliminare (e di reinserire nella fase di ricostruzione) tutte le informazioni diverse dal blocco di dati cifrati. In questo modo il file nascosto appare come una sequenza di bit apparentemente casuale, che è molto difficile distinguere da rumore. L’attacco a questo punto sarà molto più complesso perché seppure verrà estratto il file nascosto sarà difficile capire che quei caratteri costituiscono un blocco di dati cifrati. Quindi soltanto disponendo della chiave giusta si potrà accedere al messaggio in chiaro. In caso contrario non si potrà neppure capire se il fallimento è dovuto al fatto di non disporre della chiave giusta o al fatto che il file contenitore non contiene alcun messaggio segreto.

 

 

 

Figura 7: Schema steganografico ideale

 

 

5 Software Steganografico

 

In questa sezione esplicheremo il funzionamento di alcuni tra i software steganografici più utilizzati. Un raccolta completa dei programmi steganografici si può trovare all’indirizzo http://steganography.tripod.com/stego/software.html

 

 

5.1 Steganos 3 Security Suite

 

Il programma è stato sviluppato dalla DEMCOM di Francoforte (Germania) in collaborazione con CenturionSoft di Washington (USA). La versione 3 è stata rilasciata nei primi mesi del 2001 per piattaforma Intel con sistema operativo Windows 95, 98, ME, NT 4.0 e 2000. I requisiti minimi richiesti dal programma sono un processore Pentium, 32 MB di ram, circa 15 Mb di spazio libero su hard-disk. Il programma può essere scaricato gratuitamente dal sito www.steganos.com in versione shareware. Dopo 30 giorni di utilizzo è possibile continuare ad utilizzare il programma, ma in versione light, cioè con alcune funzionalità disattivate, oppure si può scegliere di registrarsi per continuare ad usarlo normalmente.

Più che un software steganografico, Steganos 3 è una suite di strumenti per la sicurezza. All’avvio appare una finestra dalla quale è possibile avviare i vari tool del pacchetto.

 

 

Figura 8: Steganos center

 

Open safe: permette di creare un drive virtuale nascosto a cui si può accedere mediante una password. Dopo l’accesso è possibile utilizzare questo drive come una qualsiasi unità e quindi utilizzarla con i normali File Manager. I dati residenti su questo drive e la password per accedervi sono cifrati tramite l'algoritmo AES selezionato dal NIST nell'ottobre 2000.

 

Internet trace destructor: quando si naviga su Internet, il browser memorizza dati riguardanti le ultime pagine visitate (cookies, cache, cronologia…).  Queste informazioni facilitano e velocizzano la navigazione, ma lasciano tracce dei siti visitati. Anche l'uso quotidiano del computer lascia tracce. Questo strumento ha proprio lo scopo di eliminare queste informazioni.

 

Lock computer: permette di bloccare il computer e di potervi riaccedere tramite una password.

 

E-mail encryption: fornisce uno strumento per la cifratura delle e-mail (o più in generale, di un qualsiasi testo) tramite l’algoritmo Blowfish. Utilizza gli appunti di Windows come i più noti applicativi crittografici.

 

Steganos file manager: è questa la parte della suite che riguarda la steganografia. L’interfaccia utente è molto intuitiva e ricorda quelle di noti programmi di compressione ed in effetti ci sono delle affinità nell'utilizzo. La differenza è che mentre un programma di compressione permette di inserire dati in un archivio compresso, questo strumento permette di nascondere dati all'interno di file BMP o WAV. Dopo aver cliccato su New, abbiamo la possibilità di compilare l'elenco dei file e/o delle directory da nascondere.

 

 

Figura 9: Schermata principale di Steganos File Manager

 

Fatto ciò, cliccando su Close and secure possiamo scegliere se cifrare soltanto o anche nascondere i dati. L’operazione di Hide infatti presuppone comunque, nel rispetto del sistema steganografico ideale, una operazione preliminare di cifratura. Dopo aver scelto Hide il programma ci chiede in che modo scegliere il file contenitore: possiamo scegliere di far cercare automaticamente un file contenitore appropriato tra quelli disponibili sull'hard-disk, di generare un nuovo file contenitore o di selezionare un determinato file come contenitore, che ovviamente dovrà essere di una grandezza tale da contenere le informazioni che vogliamo nascondere, altrimenti ci verrà chiesto di selezionare un file di dimensioni maggiori. Dalle prove effettuate, il programma opera sostituendo sempre e comunque soltanto l’ultimo bit meno significativo per non pregiudicare la qualità del file contenitore.

 

 

Figura 10: Selezione file contenitore

 

In seguito, come è ovvio, viene richiesta una password (che fa da chiave) e l’operazione è completata.

 

 

Figura 11: Immissione password

 

Per effettuare l'operazione inversa, cioè il recupero di dati nascosti, nella schermata principale basta cliccare su Open, indicare il file contenitore ed inserire la password opportuna. Anche in questo tool viene utilizzato l'algoritmo AES per la cifratura.

 

Shredder: quando si cancella un file, in realtà il file non viene cancellato fisicamente dal disco, nemmeno quando è svuotato il cosiddetto cestino, di conseguenza è possibile recuperarlo con opportuni software. Questo tool cerca di evitare questo problema cancellando i file permanentemente. Tuttavia, nella documentazione del software si legge che non è assicurata la totale eliminazione dei dati in quanto i moderni sistemi operativi (Windows ME o 2000) utilizzano tecniche di swap dei dati e non è possibile cancellare completamente informazioni da un supporto magnetico. Nelle note viene consigliato, se si hanno forti esigenze di sicurezza, addirittura di distruggere il supporto!

 

Password manager: gestisce tutte le password utilizzate per il programma stesso e per account a servizi in rete. Ancora una volta è utilizzato AES per la cifratura.

 

 

 

5.2 S-Tools 4

 

S-Tools 4, scritto da Andy Brown, è un programma steganografico tra i più diffusi, facilmente reperibile in rete presso i più  comuni siti di software freeware. L’uso del programma, infatti, è completamente gratuito ed illimitato nel tempo. La versione 4 è stata rilasciata nel 1996 e da allora non sono state prodotte nuove versioni. Il programma gira su un qualunque PC con sistema operativo Windows in tutte le versioni, lo spazio richiesto su hard disk è trascurabile. Supporta i formati WAV, BMP e GIF come file contenitori. La particolarità di questo programma è un'interfaccia utente basata esclusivamente sul drag'n'drop. I menu infatti si presentano molto scarni. Lo schema di utilizzo è il seguente:

 

1)     Si trascina il file contenitore da una finestra di un file manager nella finestra principale di S-Tools.

2)     Si trascina il file segreto sul file contenitore.

3)     Si sceglie la passphrase e l'algoritmo di cifratura; si può scegliere tra IDEA, DES, Triple DES o MDC, tutti utilizzati in modalità CFB.

4)     A questo punto viene generato il nuovo file contenente il messaggio segreto ed è possibile salvarlo.

 

Per estrarre il messaggio segreto dal contenitore si segue uno schema simile:

 

1)     Si trascina il file contenitore da una finestra di un file manager nella finestra principale di S-Tools.

2)     Si seleziona Reveal cliccando col tasto destro del mouse sul file contenitore trascinato.

3)     Si sceglie la passphrase e l'algoritmo di cifratura.

4)     Se la passphrase è giusta compare un elenco dei file nascosti ed è possibile salvarli.

 

 

Figura 12: S-Tools 4

 

 

5.3 Jsteg Shell 2.0

 

Questo programma, scritto da Derek Upham e John Korejwa funziona su tutte le versioni di Windows esclusa la 2000.  è specifico per il formato JPG ed è utilizzabile in due modalità: a linea di comando oppure con un comodo wizard che guida passo passo nelle operazioni e permette di specificare tutti i parametri della versione a linea di comando. Inizialmente il wizard ci chiede se nascondere un file o estrarre un file già nascosto.

 

 

Figura 13: Il wizard di Jsteg Shell

 

Scegliendo Hide file, si passa a scegliere il file da nascondere e si decide se utilizzare anche la crittografia, con sistema RC4-40, inserendo eventualmente la password.

 

 

Figura 14: Wizard di Jsteg Shell, passo 2

 

Successivamente si sceglie il file contenitore e si settano eventualmente opzioni che permettono di applicare lo smoothing, di produrre il file output in toni di grigio, ecc

 

 

Figura 15: Wizard di Jsteg Shell, passo 3

 

infine si provvede a salvare il file prodotto, contenente il messaggio segreto.

 

 

Figura 16: Wizard di Jsteg shell, passo 4

 

Scegliendo invece Extract file si sceglie il file contenente il messaggio segreto, si inserisce l’eventuale passphrase nel caso si sia utilizzata la crittografia e si provvede a salvare il file segreto. L’unico difetto di questa interfaccia è che tutte le volte che c'è bisogno di inserire una passphrase, non compaiono i caratteristici asterischi, di conseguenza la passphrase è visibile durante la digitazione.

 

 

 

5.4 MP3stego

 

Questo programma si occupa di steganografia con file MP3 come contenitori. E’ stato rilasciato nell’agosto del 1998 ed è disponibile sia per i sistemi operativi Microsoft che per Linux. Oltre all’eseguibile, l’autore Fabien Petitcolas (Computer Laboratory, Cambridge (UK)) distribuisce anche il sorgente liberamente. Il programma si basa su un'interfaccia a linea di comando anche se è possibile scaricare una interfaccia grafica ancora da migliorare. Esistono due comandi: Encode e Decode. Ecco un esempio dell’utilizzo di Encode:

 

 encode -E data.txt sound.wav sound.mp3

 

Il programma prende come input il file da nascondere in formato txt e il contenitore in formato wav. Dopodiché provvede a comprimere il file wav iniettando, durante la fase di compressione stessa, il file txt e generando in output il file mp3.

Per estrarre il file nascosto si utilizza il comando Decode.

 

 decode -X sound.mp3

 

Con questo comando si decomprimerà il file sound.mp3 in sound.mp3.pcm, tentando di estrarre eventuali informazioni nascoste e salvandole in sound.mp3.txt.

 

 

Figura 17: Uso di encode e decode

 

 

5.5 Gif-it-up 1.0

 

Questo software è dedicato alla steganografia con file GIF come contenitori ed utilizza le tecniche già descritte. E’ stato realizzato nell’Università del Galles da Nelsonsoft e rilasciato nel 1998. Funziona su tutte le versioni di Windows esclusa la 2000.

L’interfaccia è tra le più comuni. Prima si apre il file contenitore e poi come al solito è possibile scegliere tra due comandi da un menu: Inject e Extract a seconda che il file segreto sia da inserire nel file contenitore o da estrarre. Nella fase di iniezione, se il file GIF non utilizza tutti i colori della palette, è possibile estendere i colori a tutta la palette in modo da sfruttare tutte le permutazioni possibili dei colori della palette. Si può utilizzare anche la crittografia e quindi inserire una password. L'operazione di estrazione, invece, richiede semplicemente la password e ci fa salvare il file nascosto estratto.

 

 

Figura 18: Gif-it-up

 

 

 

6  Bibliografia

 

Internet

 

http://www.stegoarchive.com

Steganography information, software and news to enhance you privacy

 

http://web.tiscalinet.it/NetCenter/articles/arty.01.htm

Articolo: La steganografia nelle bitmap a 24 bit  (link locale)

 

http://www.nemesi.net/stegano.htm

Occultamento di testi in immagini digitalizzati  (link locale)

 

http://www.jjtc.com/stegdoc/index2.html

Steganography

 

http://www.kyuzz.org/anon/stego.html

Steganografia  (link locale)

 

http://www.cl.cam.ac.uk/~fapp2/steganography/mp3stego/

Mp3Stego  (link locale)

 

http://www.dcs.ed.ac.uk/~mxr/gfx/

Graphics – The graphic file formats page

Bmp format  (link locale)

Gif format  (link locali: Gif87a specifications, Gif89a specifications, Gif compression)

Jpg format  (link locale)                                                

 

http://ibis.nott.ac.uk/guidelines/ch62/chap6-2.html

Data formats and compression

Wav format  (link locale)

 

http://www.iis.fhg.de/amm/techinf/layer3/

Mpeg Audio Layer 3  (link locale)

 

Riviste

 

Enrico Speranza: Foto piene di sorprese, inter.net n.59 Luglio/Agosto 2000, pag. 42-46

 

 

Altro

 

Anderson Ross J. - Petitcolas Fabien A.P.: On the Limits of Steganography, IEEE Journal of Selected Areas in Communications, 16(4):474-481, May 1998. Special Issue on Copyright & Privacy Protection. ISSN 0733-8716.  (pdf)

 

Help on line di Steganos 3 Security Suite, S-Tools 4, J-steg Shell, Mp3 Stego, Gif-it-up