Lo zen e l'arte della steganografia

Archivio articoli e recensioni

Lo zen e l'arte della steganografia

Messaggioda ikir » mar ago 22, 2006 3:40 pm

Pubblicato su iksnetv3 il 13/04/2004 15:56 by sHaDy

Lo zen e l'arte della steganografia


1. Steganografia

Il termine steganografia deriva dal greco e significa scrittura nascosta. Parlando di steganografia ci riferiamo a tutte quelle tecniche che permettono a due persone di comunicare in modo sicuro occultando il messaggio che devono scambiarsi. E' importante sottolineare che è il messaggio ad essere nascosto e non il suo contenuto come avviene nella crittografia quindi non cadiamo in errore confondendo questi due termini. E' certamente vero, però, che la crittografia e la steganografia possono essere combinate pet ottenere una maggiore sicurezza. Può essere interessante, a questo punto, analizzare alcuni dei metodi steganografici ideati nel corso della storia al fine di chiarire meglio il concetto di steganografia prima di passare al ben più interessante argomento delle applicazioni moderne di questa arte. Un esempio molto celebre ci viene fornito dallo storico greco Erodoto il quale ci narra la vicenda di un nobile persiano il quale tagliò i capelli ad uno schiavo fidato, gli tatuò in testa un messaggio e poi aspettò che i capelli fossero ricresciuti. In questo modo il messaggio tatuato risultava nascosto dai capelli. Il nobile a quel punto inviò lo schiavo a destinazione con la sola istruzione di tagliarsi di nuovo i capelli all'arrivo. Citiamo ora uno degli esempi che di sicuro tutti conosceranno: i famosi inchiostri simpatici. Per chi non lo sapesse stiamo parlando di sostanza perticolari inodore ed incolore con cui vengono scritti i messaggi. I messaggi risultano invisibili in condizioni normali ma se sottoposti ad una fonte di calore q uale potrebbe essere la fiamma di un accendino prendono subito colore mostrando il messaggio (pensate per esempio al testamento di "Chi Ha Incastrato Roger Rabbit"). E' possibile realizzare questa tecnica anche con materiali molto comuni come il succo di limone o l'aceto (traditi, però, dal forte odore). Un acrostico è un testo in cui le iniziali di ogni parola formano il messaggio occultato. Ad esempio nel seguente testo:

"vai in cantina e controlla alcuni pompieri ortodossi"

Al di fuori della strupidità della frase possiamo notare che mettendo insieme tutte le prime lettere delle parole otteniamo "vice capo". Ci sono tantissime variazioni di questa tecnica. Ad esempio si può fare con le prime sillabe o con le terrere centrali o con le ultime tre lettere ecc... L'ultima tecnica che voglio analizzare è quella delle griglie di Cardano. Per prima cosa vengono ritagliati in un foglio dei rettangoli disposti in modo irregolare. Poi si poggia il foglio su di un altro e si scrive il messaggio da occultare nei rettangoli dopodiché si toglie la griglia e si cerca di completare la scrittura del resto del foglio in modo da ottenere un messaggio di senso compiuto, il quale poi viene inviato a destinazione. Il destinatario deve possedere una griglia identica a quella utilizzata dal mittente al fine di poter leggere il messaggio.


2. Tante soluzioni

E' possibile effettuare una distinzione tra le varie tecniche steganografiche. La distinzione più semplice consiste nel suddividere le tecniche iniettive e quelle generative. Parliamo di steganografia iniettiva quando il messaggio da occultare viene letteralmente iniettato nel contenitore (che in gergo viene chiamato cover). La cover quindi esiste già prima che il processo di steganografia abbia luogo anche se viene opportunamente modificata per lo scopo. Nella steganografia generativa, invece, la cover viene, come lo stesso nome suggerisce, generata per l'occasione. Una classificazine pià ampia, però, ci porta a considerare tre classi di tecniche:

1. Steganografia sostitutiva
2. Steganografia selettiva
3. Steganografia costruttiva


3. Steganografia sostitutiva

Questa classe racchiude le tecniche steganografiche più semplici e più utilizzate in assoluto. Tutte queste tecniche si basano su un principio ma prima di esporlo dobbiamo avere ben chiaro il concetto di rumore: dato un canale di comunicazione indichiamo come rumore quelle informazioni ridondanti che i nostri sensi non possono percepire. Il principio a cui ho accennato prima è il seguente: molti dei canali di comunicazione che utilizziamo (come ad esempio le frequnze radio o le linee telefoniche) emettono del rumore. Questo rumore può essere sostituito con il messaggio segreto opportunamente modificato in modo che non sia distinguibile dal vero rumore se non si conosce la chiave corretta. Per esempio mettiamo di avere un immagine digitale e di voler celare un messaggio all'interno di essa. L' operazione che dovremo compiere è sostituire i bit meno significativi con il nostro messaggio. Dato per scontato che l' immagine sia codificata RGB (Red Green Blue) a 24 bit allora ogni pixel sarà rappresentato da una terna di numeri che indicano la quantità di rosso, quella di verde e quella di blu che il pixel dovrà avere. Facciamo un esempio con un pixel (12, 20,5). Vediamo come è fatto questo pixel in binario:

Rosso = 12 = 01100
Verde = 20 = 10011
Blu = 05 = 00111

(Sempre se non ho commesso errori ;). Ebbene quali sono i bit meno significativi? Quelli sull'ultima colonna a destra!

Rosso = 12 = 01100 l'ultimo bit (0) non è significativo
Verde = 20 = 10011 l'ultimo bit (1) non è significativo
Blu = 05 = 00111 l'ultimo bit (1) non è significativo

Ora sostituiamoli con la sequenza binaria 100 (ovvero l'informazione da occultare):

Rosso = 12 = 01100 diventa 01101 = 13
Verde = 20 = 10011 diventa 10010 = 19
Blu = 05 = 00111 diventa 00110 = 04

Il pixel ora è rappresentato dalla terna (13,19,5). Un immagine sottoposta ad un trattamento del genere cala di qualità ma spesso non ci si accorge della differenza ad occhio nudo.Esisto no centinaia di programmi che svolgono le operazioni che ho descritto sopra, sia con le immaagini che con altri formati (jpeg, mpeg, mp3, zip ecc...). Il punto debole di queste tecniche sta nel fatto che quando si va a trasformare il messaggio in rumore non si riesce a riprodur- re lo stesso identico rumore che si avrebbe in condizioni normali. Un eventuale attaccante dotato di un campione del vero rumore potrebbe rendersi conto dell' anomalia. Molti programmi che attaccano i sistemi di steganografia si basano proprio su questo principio. Possiamo rendere più sicuri i sistemi di steganografia di questo tipo con qualche piccolo accorgimento. Ad esempio è possibile utilizzare immagini piuttosto grandi in modo che sia possibile alterare i bit meno significativi di un pixel ogni 10 anzichè di ogni pixel o addirittura di un pixel ogni 1000 e così via rendendo, di fatto, quasi impossibile cogliere la distorsione del rumore.


4. Steganografia selettiva

Mettiamo di avere una funzione qualsiasi da applicare ad un' immagine digitale. Questa funzione prende una matrice di pixel di una certa grandezza e restituisce 1 se il numero di bit uguali a 0 è pari mentre restituisce 0 se è dispari. Il nostro scopo è codificare un bit con valore 1(l'informazio- ne segreta): ovviamente dovremo avere un numero dispari di bit uguali a 0. Per raggiungere lo scopo generiamo un' immagine prendendo a caso delle matrici di pixel di una data dimensione e osservare se i bit uguali a 0 sono dispari o meno. Se sono dispari accetta quel blocco altrimenti prova con un altro. Insomma, va per tentativi. Questo è un esempio (seppur stupido) di steganografia selettiva. Questo tipo di steganografia non ha vere e proprie applicazioni pratiche ma rimane solo teorica, almeno per il momento. Da notare come, nell' esempio accennato, l'immagine venga generata appositamente (steganografia generativa). Il vantaggio principale è che in questo caso non si ha una variazione del rumore cosa che avviene nella steganografia iniettiva (vedi la classe di tecniche sostitutive).


5. Steganografia costruttiva

Anche questo tipo di steganografia si propone di eliminare i problemi legati alla distorsione del rumore anche se lo fa in modo differente. In pratica mettiamo di avere un formato di codifica audio (quale può essere l'mp3) il quale produce un certo rumore. Quello che dobbiamo fare è cercare di codificare il messaggio da occultare in modo che risulti uguale, o al limite molto simile, al rumore vero. A prima vista questa soluzione può apparire la migliore in quanto gli attacchi possibili spiegati nel paragrafo sulle tecniche sostitutive diventerebbero inutili. Ma non è tutto oro quel che luccica: tralaciando i problemi dovuti alla difficoltà di creazione del modello di rumore, un eventuale attaccante potrebbe generare (avendo a disposizione una strumentazione migliore) un modello più accurato riuscendo ancora una volta a cogliere la differenza fra vero rumore e messaggio codificato. In un diverso scenario potrebbe venire in possesso del nostro modello e analizzarlo al fine di trovare difetti nello stesso. Possiamo dire che per il pincipio di Kerckhoff un sistema steganografico realmente sicuro rimane sicuro anche quando i suoi dettagli divengono pubblici.


6. Permutazioni pseudocasuali

Analizziamo un ultimo metodo che fino ad ora non è stato considerato: quello delle permutazioni pseudocasuali. Ho già utilizzato il concetto di permutazioni nel doc sui sistemi crittografici simmetrici ma vedrò di rispolverarvi un po' la memoria. Mettiamo di avere una sequenza di bit:

1 0 0 0 1 1 1 0 1

Allo stadio iniziale possiamo dire che i singoli bit hanno le seguenti posizioni:

1 2 3 4 5 6 7 8 9

Ora eseguiamo la seguente permutazione:

3 8 9 4 6 5 2 7 1

La sequenza di bit dopo la permutazione diventa:

0 0 1 0 1 1 0 1 1

Ma veniamo al vivo della tecnica. Siano dati un messaggio da nascondere i cui bit vengono chiamati n e un contenitore i cui bit non significativi sono detti q. Sia data, inoltre, una chiave k. Ovviamente avremo:
q > n

Generiamo ora una permutazione pseudocasuale P a partire dalla chiave e da n. Indichiamo con n[i] i singoli bit del messaggio segreto (ad esempio per il primo bit i = 1, per il secondo i = 2 ecc...). Ora cominciamo a prendere i singoli n[i] (n[1], n[2]....) ed a scambiarli, anzichè con i rispettivi bit non significativi q[i], con i P[i]esimi bit modificabili. Con questa tecnica possiamo dire che avviene un "esplosione" del messaggio nel contenitore quindi è chiaro che la sicurezza aumenta in modo esponenziale in base alla grandezza del contenitore in quanto più è grande il contenitore più l'esplosione è distribuita.


7. Quale scegliere?

Dopo questa carrellata di tecniche viene spontanea una domanda: quale scegliere? Mi sembra chiaro che le soluzioni migliori siano la steganografia sostitutiva e il sistema delle permutazioni pseudocasuali che in fin dei conti può essere considerato una variazione delle tecniche sostitutive. Ho accennato all'inizio dell'articolo, che la steganografia e la crittografia possono allearsi al fine di formare un sistema con una maggiore sicurezza.

Messaggio in chiaro--->Crittografia--->Steganografia--->Contenitore contenente il messaggio cifrato


8. Conclusioni

Specialmente dopo gli ultimi avvenimenti che hanno scosso un po' il mondo intero come il crollo delle torri gemelle o il recente attentato a Madrid l'argomento "protezione dei dati e privacy" è diventato molto delicato. Troppo. Basti pensare all'autore del celebre programma di steganografia outguess il quale è stato costretto a censurarsi sospendendo la distribuzione dei sorgenti del programm per un po' di tempo. Questo per un motivo ben preciso: si tente sempre più spesso ad associare le tecniche di protezione dei dati da terrorismo o, più in generale, alla criminalità. Non dico che non sia vero che i terroristi abbiano utilizzato crittografia e steganografia per scambiarsi istruzioni e messaggi di vario tipo ma secondo il mio modesto parere non c'è nulla a questo mondo di cui non sia possibile fare un utilizzo scorretto. Se è vero che la privacy è un bene che tutti devono avere la steganografia non è certo stata concepita per usi che vanno contro la legge. A questo punto sta a voi decidere, amici lettori, se ritenere che la ricerca di privacy sia da criminali o se sia un diritto per cui bisogna lottare.

sHaDy
Avatar utente
ikir

Admin
 
Messaggi: 10202
Iscritto il: mer gen 08, 2003 7:33 pm
Località: SYS:Prefs/

Torna a Articoli

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron