UNITA' DI APPRENDIMENTO: SCUOLA SECONDARIA 2°


STEGANOGRAFIA: PERCHÉ STUDIARLA IN CLASSE

di Rosa Marincola e Pasquale Cozza

ATTIVITÁ SPERIMENTATE nelle classi IV e V sez. B dell’I.I.S.S. “A. Guarasci” sez. I.T.C. di Rogliano (Cs)

Sunto
In questo contributo vengono descritte delle attività didattiche di laboratorio, sperimentate con studenti del IV e V anno del corso Programmatori Mercurio sulla steganografia. Questo argomento, a differenza della crittografia non è previsto nei programmi ministeriali e non è trattato nei libri di testo d’informatica, ma, è di grande attualità nel web in quanto ampiamente utilizzata nei forum e nei blog.

Premessa
La steganografia (dal greco stèganos: nascosto, occulto e gràfein:scrivere) è una tecnica elusiva talvolta ignorata o confusa con la crittografia. In realtà esse sono ben distinte: se l’obiettivo della crittografia è la codifica di un messaggio in modo da renderne incomprensibile il contenuto a chi non possiede la chiave per decodificarlo, la steganografia è invece l’arte di nascondere un messaggio all’interno di un altro messaggio anodino (il contenitore) o su un supporto insospettabile, così da occultarne il contenuto, impedendone l’identificazione. La steganografia digitale che tratteremo, consente di nascondere all'interno di file digitali (testo, immagini o suoni), ogni tipo di file o messaggio segreto. Attualmente la steganografia viene utilizzata nel settore della sicurezza delle informazioni, là dove la sola crittografia non è sufficiente. In campo medico, alcune applicazioni consentono, ad esempio, di trattare immagini o registrazioni biomediche come radiografie e risonanze nucleari magnetiche, marcandole in modo da identificare con sicurezza il soggetto a cui appartengono. Un’analoga applicazione è in ambito copyright per salvare in un’immagine i dati dell’autore. Anche in criminologia, la steganografia è utilizzata nella computer forensics, branca dell’informatica che si occupa del trattamento dei dati informatici ai fini probatori nei processi giuridici (N. Amato, 2009). Il concetto teorico di steganografia è praticamente rimasto immutato nonostante l’evoluzione tecnologica, solo con la nascita del www nel 1990 è nata una forma di steganografia multimediale, poiché questa pratica si è notevolmente diffusa attraverso blog, forum, e-mail e altre modalità di comunicazione asincrona.
La storia abbonda d’ingegnosi e intriganti stratagemmi steganografici. Erodoto narra che Isteo per avvisare Aristagora di Mileto che era il momento propizio per insorgere contro i Persiani,  rasò uno schiavo fedele e tatuò il messaggio sul cuoio capelluto, aspettò che gli ricrescessero i capelli e lo inviò con un messaggio insignificante al termine del quale era scritto di rasare lo schiavo.  Le griglie di Cardano erano dei fogli in cui venivano ritagliati dei fori rettangolari ad intervalli irregolari. La griglia veniva sovrapposta su un foglio bianco e il messaggio segreto veniva scritto nei buchi, quindi si toglieva la griglia e si scriveva sul foglio un testo a completamento, in modo che il messaggio in chiaro nascondesse il messaggio; sovrapponendo una griglia identica alla prima, appariva il messaggio segreto. Il primo teorico della steganografia fu l’abate Giovanni Tritemio, egli scrisse l’omonimo libro “Steganographia” verso la fine del XV sec. Lo scienziato italiano Giovanni Battista Della Porta scoprì che un inchiostro contenente allume e aceto, penetrava attraverso il guscio di un uovo sodo per cui scrivendo un messaggio, questo non lasciava tracce apparenti, ma la scritta restava impressa sulla superficie dell’uovo al di sotto del guscio. Nel corso della storia si è fatto ricorso a molti tipi d’inchiostri “simpatici” utilizzando gli acidi presenti in molti succhi (limone, cipolla, ciliegia, aceto, ecc.) alcuni rendevano visibili le scritte col calore, altri se cosparsi di polveri, altri ancora ricavati da sostanze chimiche (si veda  http://www.apprendre-en-ligne.net/crypto/stegano/encre.html).
Nella seconda guerra mondiale, si fece ricorso alla tecnica delle cifre nulle per le comunicazioni via radio. Il messaggio trasmesso era scritto in modo tale che, unendo ad esempio le prime lettere di ogni capoverso (o con altre tecniche simili), si ricavava il messaggio segreto. Sempre durante seconda guerra mondiale fu utilizzata dall’ F.B.I. la tecnica dei micropunti fotografici, erano delle fotografie della dimensione di un punto dattiloscritto che, sviluppate e ingrandite, diventavano delle pagine stampate. Secondo le indagini condotte dalla CIA, dopo l’attentato dell’11 settembre alle Torri Gemelle, i terroristi di Al-Qaeda hanno fatto largo uso della steganografia per comunicare tra loro e tramare attentati, pare che oggi la utilizzino molto meno grazie all’evoluzione delle tecniche di stegoanalisi. Queste e molte altre informazioni quali i diversi tipi di modelli steganografici sono state reperite da siti web i cui indirizzi sono riportati in sitografia.
Introduzione
Le attività proposte sono state sperimentate nelle classi IV e V sez. B del corso Programmatori Mercurio dell’I.I.S.S. “A. Guarasci” sez. I.T.C. di Rogliano (CS) all’inizio dell’a.s. 2009/10. L’idea di trattare questo argomento non presente in molti libri di testo e nei programmi curricolari (in realtà il termine steganografia non è presente anche in molti vocabolari), è nata da discussioni in classe e dalle numerose domande poste dagli studenti sulla sicurezza dei sistemi informatici e sul modo in cui sia possibile inserire file in un’immagine, in suoni o in file senza che questi subiscano modifiche “visibili”. Gli studenti sono stati molto incuriositi e hanno partecipato con grande attenzione alle attività svolte. Innanzi tutto sono stati introdotti i concetti di crittografica (simmetrica e asimmetrica) che fanno parte dei programmi curricolari del progetto Mercurio e, poi, abbiamo studiato alcuni elementi sulla steganografia. Sono state effettuate delle ricerche sul web per reperire informazioni sugli argomenti, non solo dal punto di vista storico, ma anche riguardo alle principali tecniche utilizzate. In particolare abbiamo studiato la steganografia sostitutiva che comprende le tecniche più semplici, basate sul fatto che nei canali di comunicazione (come frequenze radio o linee telefoniche), i segnali sono disturbati da “rumori”, ossia interferenze. Il rumore di fondo, può essere sostituito con il messaggio da occultare, modificato in modo tale da non poterlo distinguere dal vero rumore se non si conosce la chiave corretta. Se poi si vuole nascondere un messaggio in un’immagine digitale, l’operazione da compiere è la sostituzione dei bit meno significativi con il messaggio da occultare.
Data l’attualità, l’attività ha catturato l’attenzione degli studenti e su loro stessa richiesta si è discusso dei software esistenti (molti anche freeware) che eseguono la steganografia. L’utilizzo di questi programmi è immediato, non richiede particolari conoscenze informatiche e per alcuni di essi è accessibile anche  il codice sorgente, per cui si è proposto agli studenti più interessati uno studio del codice e di costruire, a partire da questo, applicazioni personalizzate da inserire eventualmente in una tesina da presentare all’Esame di Stato.
Il meccanismo di steganografia consiste di 2 fasi: il mittente nasconde un messaggio (hide process) tramite un procedimento invertibile, il destinatario lo ricostruisce al momento della ricezione (unhide process).
Abbiamo scelto per la sua completezza il programma StegoMagic v. 1.0 liberamente scaricabile, dal sito:
http://home.comcast.net/~ebm.md/stego/software.html per realizzare esempi di steganografia in diversi file multimediali, evidenziando il fatto che gli effetti non siano “evidenti” sia che si utilizzino testi, immagini o suoni.
Si è poi spiegato come utilizzare direttamente i comandi del sistema operativo DOS per “nascondere” un messaggio contenuto in un file compresso in un altro file (di testo, in un’immagine e in un file musicale) senza l’ausilio di alcun programma in modo da renderlo “invisibile”.
Un concetto ben noto agli studenti sin dal terzo anno, è che qualsiasi dato digitale (testo, suono, immagine, ecc.), viene codificato in sequenze numeriche di bit 0 e 1 che il computer è in grado di elaborare. Oltre al sistema binario, essi conoscevano anche altre rappresentazioni mediante codici e in sistemi di numerazioni diversi. Il lavoro svolto ha fornito l’occasione di approfondire lo studio sulla composizione delle immagini e si è realizzata un’applicazione in Visual Basic, successivamente esportata in un foglio Excel (di seguito descritta), per lo studio della funzione RGB per l’impostazione dei colori.

Alcune proposte di attività didattiche
Abbiamo realizzato esempi di steganografia utilizzando comandi del sistema operativo. I nostri studenti non hanno molta familiarità con l’MS-DOS che, pur sopravvivendo nell’ambiente virtuale di Windows, non è più un prodotto a sé stante da quando è stato integrato in Windows 95. Queste tecniche si basano sulla concatenazione dei file binari e sul fatto che i sistemi operativi, come Microsoft Windows e l'MS-DOS, riconoscono il formato di un file in base all'estensione del loro nome per cui a concatenazione avvenuta, aprendo un particolare file, il contenuto di quello ad esso concatenato, rimane nascosto. Come abbiamo già detto, qualsiasi file non è altro che una sequenza ordinata di bit raggruppati a gruppi di otto (byte),  conforme ad un particolare formato (ad esempio i file di testo usano sistemi di codifica ASCII per rappresentare caratteri alfanumerici). Il formato di un file è specificato dall'estensione (di solito tre lettere) che segue il nome del file, separato da un punto. Per ciascun formato esistono programmi che sono in grado di interpretare e di modificarne il contenuto. Durante l’esecuzione delle diverse fasi gli studenti ponevano domande per capire il perché certe operazioni producessero certi risultati, ma per renderli più partecipi, più che dare direttamente le risposte, venivano guidati con altre domande, osservazioni e rimandi a quanto era già loro noto, ma in un contesto diverso. 
1-Nascondere un messaggio segreto in un file multimediale di testo, in un’immagine e in un file musicale con dei semplici comandi MS-DOS.
Sono stati eseguiti i seguenti passi:

  1. è stato creato un file con un editor di testo, denominato Originale.txt, che è stato salvato nella cartella Documenti;
  2. col sistema operativo Windows XP, dal pulsante “Start”, è stata selezionata la voce “Esegui”, nella finestra di dialogo è stato digitato “cmd” e si è cliccato sul pulsante “OK”. Se il S. O. è Windows Vista, l’unica differenza è che dopo aver selezionato “Start”, occorre scrivere “cmd” nella barra di testo “Inizia ricerca” e si preme il tasto “Invio” sulla tastiera.
  3. Nella finestra che si è aperta (figura 1), è stato inserito il comando “cd documenti” e si è premuto il pulsante “Invio” sulla tastiera.
  4. A questo punto, per nascondere il messaggio segreto in un  file di testo, si è digitato il comando “notepad Originale.txt:Segreto.txt” e si è premuto il pulsante “Invio”.
  5. Nella nuova finestra che si è aperta, alla richiesta di creare un nuovo documento di testo, si è cliccato sul pulsante “Sì” ed è stato scritto un breve messaggio da occultare, salvato col nome “Segreto.txt”.


Figura 1
Quando gli studenti hanno aperto il file di testo “Originale.txt” precedentemente salvato, non hanno trovato il messaggio segreto. Il file era apparentemente immutato, ma, dopo aver ripetuto i primi quattro passi precedenti, all’esecuzione del comando “notepad Originale.txt:Segreto.txt” hanno visualizzato il messaggio nascosto. È stato loro spiegato che con tale comando MS-DOS vengono  concatenati due file separati mediante il carattere speciale “:” (presente nella directory root, dell’unità disco), ma che alla richiesta di apertura del file di testo  “Originale.txt”, il S.O. eseguiva il comando e visualizzava il contenuto salvato con questo nome. L’operazione di concatenazione è stata spesso utilizzata in precedenza dagli studenti per “unire in sequenza” più stringhe di caratteri col Visual Basic, quindi tale concetto è stata la chiave di lettura per comprendere il lavoro svolto dal S.O. sulle sequenze di bit che formavano i due file.
Con una procedura molto simile sono stati nascosti messaggi in immagini, file compressi, file musicali. I comandi sono leggermente diversi, ma il risultato è sempre quello di “concatenare” file diversi: uno visibile e l’altro hidden (nascosto).
Per nascondere un file di testo in un'immagine abbiamo usato il file “foto.jpg” e abbiamo creato il messaggio “segreto.doc” che poi abbiamo compresso (basta selezionare Aggiungi all’archivio segreto.rar), infine abbiamo salvato i due file nella cartella “Documenti”. Come nel caso precedente dopo aver eseguito i primi tre passi (fino ad arrivare alla finestra in figura 1), abbiamo digitato il comando: “copy /b foto.jpg + segreto.rar risultato.jpg”. Stesso problema evidenziato sopra.
Il comando MS-DOS “copy” copia uno o più file in un'altra posizione, ma in questo caso è stato utilizzato per concatenare i due file in un terzo, attraverso l’operatore ”+”, l’opzione “/b” indica un file binario. L’header del JPG, ovvero la parte del file che contiene le informazioni necessarie al decoder (player) per visualizzare correttamente l’immagine, si trova nella parte iniziale del file. Pertanto il file concatenato non viene rilevato dal decoder, viceversa l’header del RAR viene trovato da WinRar che vede solo la parte compressa. Quindi aprendo i due file “foto.jpg” e “risultato.jpg” non si scorgevano differenze, ma, è stato possibile constatare che le dimensioni erano cambiate: se il primo file era di 5003 byte, e “segreto.rar” era di 1811 byte, “risultato.jpg” aveva una dimensione pari alla somma, cioè 6814 byte. Per aprire il file di testo, è bastato cliccare sull’immagine col tasto destro del mouse e selezionare “Apri con ...WinRar” oppure rinominare il file “risultato.rar”. Tuttavia è stato precisato e verificato che aprendo l’immagine e modificandola con un programma di fotoritocco e poi salvata, il messaggio segreto andava perso, perché con l’operazione di salvataggio (distruttiva) si sovrascriveva sui due file concatenati il nuovo unico file, quindi diventava impossibile per il S.O. recuperare i bit che prima costituivano un file a sé stante.  
Con la stessa procedura abbiamo concatenato il file “segreto.rar” ad un file musicale, ad esempio “Claire.wma”, sempre col comando DOS:
“copy /b Claire.wma + segreto.rar Lune.wma”
il file Lune.wma che è stato creato sotto documenti, se aperto con “Gestione Archivi WinRar” o, modificandone l'estensione in “Lune.rar”, visualizzava il file nascosto. Per i file WMA sono state fatte le stesse considerazioni sull’header dei file JPG, anche in questo caso ascoltando i brani non si percepisce alcuna differenza, ma se il primo file era di 322270 byte, il secondo risulta essere di 324081 byte.
Anche se la descrizione di queste procedure ad una prima lettura può apparire tecnica e complessa, esse sono state eseguite facilmente da tutti ragazzi, anche più deboli, perché curiosi e divertiti nel verificare che funzionassero.

2-Dai modelli steganografici ad un’applicazione in Visual Basic sulla funzione RGB
Un’immagine digitale di tipo bitmap è una matrice di punti (o pixel). Uno dei metodi più utilizzati per la rappresentazione dei colori è il sistema RGB (Red, Green, Blue). Il sistema con cui si creano i colori nel monitor è analogo a quanto avviene in natura, ogni colore si può ottenere combinando i tre colori fondamentali: rosso, verde e blu. Ogni componente contribuisce alla formazione del colore prescelto attraverso una sua tonalità, rappresentata da un numero che varia da 0 a 255.
La terna RGB(0, 0, 0) produce il nero, quella RGB(255, 255, 255) produce il bianco, le terne per cui i tre valori sono uguali e compresi tra 0 e 255 producono una tonalità di grigio, ecc. Ogni pixel dell’immagine sarà rappresentato da una terna di numeri che indicano la quantità di rosso, di verde e di blu che dovrà avere. Ad esempio un pixel RGB(102, 227, 147) sarà di una tonalità di verde (vedi figura 2). Questo pixel in binario corrisponde a:
Rosso = (102)10 = (01100110)2
Verde = (227)10  = (11100011)2
Blu = (147)10 = (10010011)2

I bit meno significativi sono quelli sull’ultima colonna a destra. Nel caso del Rosso l'ultimo bit 0 non è significativo, nel caso del verde non è significativo l’ultimo bit (1) e analogamente per il Blu, non è significativo l’ultimo bit 1. Se l’informazione da occultare è la sequenza binaria 100, li sostituiamo ottenendo:
Rosso = (01100111)2 = (103)10
Verde = (11100010)2 = (226)10
Blu = (10010010)2 = (146)10

Il pixel ora è rappresentato dalla terna (103, 226, 146), la differenza non è percepibile a occhio nudo, specialmente se si utilizzano immagini piuttosto grandi in modo che sia possibile alterare i bit meno significativi di un pixel ogni 10 anziché  ogni pixel o addirittura di un pixel ogni 1000 e così via rendendo, di fatto, quasi impossibile cogliere la distorsione, per cui operando in tal senso è possibile nascondere i bit di un file in un’immagine.
Abbiamo poi costruito un’applicazione capace di visualizzare i valori numerici delle tre componenti di colore, in modo da richiamare alcune funzioni del Visual Basic che gli studenti avevano utilizzato l’anno precedente, ma inserendo l’applicazione in un foglio Microsoft Excel per permettere a quanti non possiedano una copia del programma di poterlo riprodurre anche a casa.
Per comodità si riporta la sequenza di comandi e il codice utilizzato.
Dal menu “Visualizza”, si seleziona “Barre degli strumenti” e “Visual Basic”. Per inserire i controlli visibili in figura 2, dall’icona “Strumenti di controllo”, abbiamo selezionato “Altri controlli” e infine “Microsoft Slider Control, version 5.0 (SP2)”.
Cliccando col tasto destro del mouse sui controlli ne abbiamo impostato alcune proprietà. Per lo slider, la proprietà “name” è stata “SldColore1, Min 0 e Max 255. Il rettangolo colorato è stato creato con un controllo “Etichetta” cui è stato dato come proprietà “name”: LblColore e nella “caption” è stata cancellata la scritta Label1. Sono state inserite anche tre caselle di testo, il cui name è rispettivamente: TxtRosso, TxtVerde, TxtBlu; per tutte e tre è stato cancellato il contenuto della proprietà “text”.

Figura 2
Cliccando 2 volte su un controllo Slider si genera l’apertura della finestra del codice ove si è scritto quanto di seguito riportato.

Dim rosso As Byte
Dim verde As Byte
Dim blu As Byte

Private Sub SldColore1_Click()
rosso = Val(SldColore1.Value)
LblColore.BackColor = RGB(rosso, verde, blu)
TxtRosso.Text = rosso
End Sub

Private Sub SldColore2_Click()
verde = Val(SldColore2.Value)
LblColore.BackColor = RGB(rosso, verde, blu)
TxtVerde.Text = verde
End Sub

Private Sub SldColore3_Click()
blu = Val(SldColore3.Value)
LblColore.BackColor = RGB(rosso, verde, blu)
TxtBlu.Text = blu
End Sub

Per verificare il corretto funzionamento del programma, abbiamo poi creato un’immagine monocromatica col colore giallo di base del programma Paint di Windows. Dal menu “Colori”, selezionando “Modifica colori” e “Definisci colori personalizzati”, è possibile visualizzare la funzione RGB (vedi figura 3).

Figura 3
Abbiamo salvato l’immagine come Bitmap a 24 bit (giallo.bmp); aprendo il file con l’editor esadecimale TexPad (figura 4), si vede che dopo le righe d’intestazione, ogni pixel giallo, ha come valore esadecimale (FF FF 00) che corrisponde in decimale a (255 255 0), valore la cui tonalità corrisponde anche con l‘applicazione realizzata con Excel.

Figura 4
3-Nascondere un messaggio segreto in una pagina web (HTML, PHP, ecc)
Questa tecnica è estremamente semplice: se una qualsiasi pagina web, viene aperta col blocco note di Windows o con un qualsiasi editor di testo, anziché col browser, se ne visualizzerà il codice sorgente. Se si posiziona il cursore di scrittura in fondo al testo e si inserisce il testo del messaggio tra i caratteri
 < > e successivamente si salva il testo con la funzione “Salva” e non “Salva con nome...”, aprendo la pagina col browser, non verrà visualizzato il messaggio che sarà trattato come frase di commento e non un tag da eseguire, aprendola con un qualsiasi editor di testo non formattato, il messaggio sarà visibile.

Conclusioni
La steganografia consente di trattare argomenti estremamente attuali sulla scienza della comunicazione e sulle tecnologie. La sua introduzione nella didattica curricolare permette di organizzare un percorso interdisciplinare che ne evidenzi l’utilizzo nel corso della storia, consente di introdurre in modo mirato lo studio di alcune reazioni chimiche (con lo studio degli inchiostri “simpatici” che sfruttano le proprietà di alcune sostanze acide) e la rappresentazione matematica dei numeri in diversi sistemi di numerazione e l’uso degli operatori logici. Molto interessante anche dal punto di vista informatico per  approfondire la conoscenza sulla rappresentazione dei dati multimediali, quanto concerne l’uso e lo sviluppo di applicativi in diversi linguaggi di programmazione e per alcune funzionalità del sistema operativo. L’argomento, può essere trattato a diversi livelli in qualsiasi corso di studi ed è sicuramente utile per suscitare interesse anche negli studenti più demotivati, per stimolare la discussione e per abituarli a formulare congetture. Utile anche per “le eccellenze”, in quanto gli studenti più brillanti possono produrre interessanti lavori per tesine e percorsi di approfondimento utilizzando particolari algoritmi. Le attività proposte sono state realizzate in tre ore di lezione in ciascuna classe, entrambe hanno lavorato con interesse, senza incontrare particolari difficoltà. Gli studenti nel lavoro di ricerca in rete hanno letto con attenzione i vari articoli, riuscendo a reperire importanti informazioni e curiosità. Alcuni si sono appassionati e hanno scoperto nuove tecniche, come l’occultamento in una pagina web che inizialmente non intendevamo trattare.
Come possibili sviluppi futuri e approfondimenti, ci riserviamo di realizzare  un programma di steganografia sostitutiva in un file contenitore Bitmap.

BIBLIGRAFIA
N. Amato: La steganografia da Erodoto a Bin laden,Viaggio attraverso le tecniche elusive della comunicazione, Italian University Press, 2009.
P. Gallo & F. Salerno: Informatica generale. Teorie e tecnologie digitali dell’informazione e della comunicazione, Minerva Italica, vol. 1, pag. 311-314, Città di Castello (Pg), 2006.
A. Lorenzi & D. Rossi: Informatica:teoria e programmazione in Visual Basic, ATLAS, pag. 528-529, Bergamo, 2006.

SITOGRAFIA
http://www.laury-onweb.net/steg/
http://www.dia.unisa.it/~ads/corso-security/www/CORSO-0001/Steganografia.htm
http://www.stegoarchive.com/
http://www.apprendre-en-ligne.net/crypto/stegano/cardan.html
ttp://www.ippari.unict.it/wikippari/storage/users/81/81/images/130/steganografia4.pdf
http://www.wepin.com/pgp/stego.html
http://it.geocities.com/steganomania/
http://home.comcast.net/~ebm.md/stego/software.html
http://aranzulla.tecnologia.virgilio.it/nascondere-un-messaggio-segreto-in-un-file-di-testo-3172.html
http://www.guillermito2.net/stegano/index.html
http://it.kioskea.net/contents/video/format-bmp.php3#

http://www.textpad.com/
http://www.winrar.it/

22 aprile 2010

HomePage