Cosa ne pendi del blog?

lunedì 4 agosto 2008

Introduzione alla steganografia

ntroduzione

La parola steganografia significa letteralmente – in greco - “scrittura nascosta”, e questo vi potrebbe far pensare subito alla crittografia in quanto anche questa, in un certo senso, ha lo scopo di occultare dei messaggi. Tuttavia le due hanno una differenza sostanziale. Mentre la crittografia si preoccupa di rendere un messaggio illeggibile agli occhi di una persona non autorizzata, la steganografia fa in modo che una persona non autorizzata non si renda nemmeno conto dell'esistenza del messaggio in questione.
La steganografia è piuttosto antica come tecnica, e solo ultimamente è stata introdotta in campo digitale. Gli stessi geroglifici egiziani possono essere considerati una sorta di messaggi steganofrafati, in quanto potrebbero essere dei semplici disegni per chi non ne conosce il significato. Più recentemente, ed in particolare durante la seconda guerra mondiale, i nazisti usavano la tecnica dei micropunti fotografici: sono delle particolari fotografie delle dimensioni di un punto che una volta sviluppate ed ingrandite svelano il messaggio nascosto.


Tecniche steganografiche

I dati da nascondere vengono celati all'interno di contenitori (detti cover o medium), i quali possono essere dei file di diversa natura. I metodi utilizzati sono sostanzialmente tre:

Iniezione: questo metodo consiste nell'aggiungere dei bit all'interno del cover. La pecca di questa tecnica è che la grandezza del file può aumentare anche considerevolmente, a seconda dei bit iniettati.
Sostituzione: si tratta di sostituire i bit “inutili” - spiegato poi - presenti nel file, con quelli da noi voluti. A seconda della percentuale di bit sostituiti l'aspetto del file può variare più o meno considerevolmente. In un' immagine, per esempio, alcuni dettagli potrebbero svanire o degradarsi.
Generazione di un nuovo file: in questo caso non è necessario nessun cover, ma ne viene creato uno che sia perfettamente adatto ad ospitare i dati da occultare. In questo modo eventuali artefatti non si dovrebbero notare.

Mi soffermerò solo sulla seconda, anche perché è la più utilizzata.

Teoria

A questo punto vi servirebbero delle nozioni riguardo alla teoria dell'informazione, entropia nei file etc. che io a grande richiesta non farò, anche perché andrei abbastanza fuori tema.
Vi basti sapere che i file comuni possiedono sempre delle informazioni superflue, le quali possono essere eliminate senza compromettere in maniera sostanziale il contenuto del file. Questo è quello che fanno tutti gli algoritmi di compressione.
La steganografia in digitale è una sorta di algoritmo di compressone, che però... non comprime. I bit non vengono eliminati ma sostituiti con quelli da occultare. Questo metodo è chiamato LSB (Least Significant Bit : bit meno significativo). In pratica si tratta di cambiare il bit low-end dei vari byte:

1100101(1)

in questo caso l'ultimo bit (1) è quello che possiamo modificare. Vediamo ora com'è possibile sostituire dei bit nelle immagini a 24 bit.
Queste immagini sono solitamente in modalità RGB, cioè ad ogni pixel corrisponde un determinato valore di rosso, verde e blu. 255, 255, 255 = pixel bianco 0, 0, 0 = pixel nero. E così per tutti gli altri colori. Ora, se voi provate a colorare un pixel con la sequenza 255, 253, 255 il risultato vi sembra forse diverso dal bianco? A meno che non abbiate una vista da superdotati, no.
Quindi poniamo di voler occultare la lettera “a” (01100001) in una sequenza di byte, quale può essere un immagine, e poniamo la seguente sequenza:
...
11011010
10001011
11001000
01011010
11001111
11101010
01011010
11001011
...

ecco come procedere:

...
11011010 <-- qui il bit rimane invariato in quanto corrisponde
10001011 <-- “
1100100(1) <-- qui lo cambiamo
01011010 <-- qui il bit rimane invariato in quanto corrisponde
1100111(0) <-- qui lo cambiamo
11101010 <-- qui il bit rimane invariato in quanto corrisponde
01011010 <-- “
11001011 <-- “
...

Come avete visto ci è bastato modificare solo due bit perché gli altri corrispondevano già a quelli da nascondere. In questo caso è praticamente impossibile capire che il file è stato steganografato, ma ovviamente può capitare di dover nascondere molti più bit, e quindi se ne dovranno mutare di più.

Conclusione

Bene, questo è quanto. Ora potrete dilettarvi nel costruire dei programmi che implementino queste tecniche, che tra l'altro sono abbastanza banali, e nascondere i vostri messaggi nei file.

1 commento:

Anonimo ha detto...

In realta' l'autore di questo articolo e' uno dei gestori del blog Mind Unpacked. Potete trovare una versione rivista dello stesso articolo all'indirizzo qui: http://mindunpacked.com/2008/introduzione-alla-steganografia-digitale/