I files audio digitali sono molto flessibili e pertanto adatti a recitare il ruolo di cover. Come per le immagini, la tecnica più usata per nascondere messaggi segreti nei files audio consiste nel rimpiazzare i bits meno significativi.
Un file wav mono, campionato a 44100 Hz a 16 bit, per esempio, indica un file che è stato costruito ottenendo 44100 stringhe di 16 bits al secondo nella fase di digitalizzazione del suono, ossia è stata generata una stringa di 16 bits ogni 1/44100 di secondo. Nel caso di un wav stereo, le stringhe di 16 bits ottenute sono due, una per il canale destro ed una per il sinistro. Come detto, si possono sostituire i bits meno significativi allo scopo di nascondere un messaggio segreto.
Tanto per avere un'idea, un file wav stereo di un minuto è grande:
16 bits x 44100 Hz x 60 sec = 42336000 bits = 5168 Kb circa,
da raddoppiare perché il file è stereo, quindi 10336 Kb.
La tecnica più utilizzata, rimpiazza i bits meno significativi di ogni byte come avviene nella maggior parte degli algoritmi steganografici. Se decidessimo di utilizzare i 2 bits meno significativi per ogni stringa di 16 bits otterremmo una disponibilità di
84762000 bits / 16 bits x 2 = 10595250 bits = 1293 Kb circa.
|
|
Figura 7: File wav originale. |
Figura 8: Lo stesso file wav con iniezione di un file di testo di 128 kb. |
Purtroppo, questo approccio modifica il file aggiungendo un forte rumore di fondo (noise) avvertibile dall’orecchio umano, per cui un file così modificato verrebbe riconosciuto facilmente, poi distrutto o filtrato del noise e ricampionato oppure verrebbe aggiunto un “noise superimposed” (un rumore di fondo di default) in modo da modificare irrecuperabilmente il messaggio segreto.
Un’altra, più robusta, tecnica per mascherare i dati in files audio che utilizza una serie di eco inseriti nel suono per trasmettere 1 e 0 è la Echo-data-hiding[8]. Se il suono originale e la sua eco sono divisi da uno spazio di tempo piccolo abbastanza, l’orecchio umano non riesce a distinguere i due suoni. I dati possono essere codificati in questi eco rappresentando gli 0 e gli 1 come due offsets differenti di eco, in modo che gli offsets siano al di sotto dei livelli di percezione umana.
Rispetto alla scrittura sui bit meno significativi, l’Echo-data-hiding è migliore sia perché non altera il suono in modo percepibile sia perché, visto che si possono usare eco con una grossa gamma di frequenze, viene ridotta la possibilità che il suono venga ricampionato.
S-Tools, scritto da Andy Brown, è tra i programmi steganografici 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.
Per quanto riguarda l'hiding dei file WAV, il software lavora su file WAV a 8 o 16 bits avviene secondo lo schema LSB cioè vengono considerati ridondanti i bits meno significativi di ogni byte. I Cover Bits, ovvero il sottoinsieme di bits che effettivamente verranno rimpiazzati vengono scelti in base alla passphrase inserita in input. Infatti, S-tools usa un generatore di numeri pseudo-casuale che genera il suo output a partire dalla passphrase e lo usa per scegliere la posizione del prossimo bit del cover da rimpiazzare. Se, ad esempio, il file WAV ha 100 bits disponibili per l'embedding e si vogliono nascondere solo 10 bits, S-Tools non sceglierà i bits da 0 a 9 perché risulterebbero facilmente individuabili da un attaccante. Piuttosto, sceglierà i bits 63, 32, 89, 2, 53, 21, 35, 44, 99, 80 o altri dieci, il tutto dipendente dalla passphrase inserita. In questo modo un attaccante si troverà in grossa difficoltà.
La particolarità di questo programma è un'interfaccia utente basata esclusivamente sul drag & drop. I menu infatti si presentano molto scarni.
Lo schema di utilizzo è il seguente:
Si trascina il file contenitore da una finestra di un file manager nella finestra principale di S-Tools. Viene visualizzata l'onda che rappresenta il file WAV e in basso viene mostrata la sua capacità;
|
Figura 9: viene visualizzato il file "ORIGINAL.wav" e la sua capacità (7.752 bytes) |
|
Figura 10: il file "secret message.doc" (20 KB) viene compresso (a 2.017 bytes) e nascosto |
|
Figura 11: In alto il file "ORIGINAL.wav" e in basso il file "HIDDEN.wav" contenente il file "secret message.doc" |
Come si può notare, i due files, all'ascolto, non presentano alcuna differenza.
Per estrarre il messaggio segreto dal contenitore si segue uno schema simile:
Si trascina il file contenitore da una finestra di un file manager nella finestra principale di S-Tools;
Analizziamo meglio l'esempio visto.
Il file "ORIGINAL.wav" è un file audio mono a 8 bit campionato a 11025 Hz e dura circa 5,625 secondi.
Quindi, la dimensione del cover = 8 x 11025 x 5,625 = 496125 bits ≈ 60,6 Kbyte.
A questo punto, calcoliamoci la sua capacità.
Sappiamo che, i bits ridondanti sono costituiti dal bit meno significativo di ogni byte del file, quindi
#bits ridondanti = dimensione del file in byte = 496125 bits / 8 ≈ 62015.
Quindi la capacità del cover (in bytes) = #bits ridondanti / 8;
ovvero, capacità del cover (in bytes) = 62015 / 8 ≈ 7752 bytes.
Mp3Stego è un software che effettua l’embedding sfruttando la tecnica dell’Echo-data-hiding. L’algoritmo di encoding Mp3 è lossy, ovvero comprime i dati in input con perdita di informazione fornendo un output molto simile ma non identico all’input. Per questo motivo, l’embedding deve essere necessariamente effettuato nel processo di trasformazione da wav ad Mp3.
Mp3Stego è 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 Laboratori, 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.
|
Figura 12: Uso di encode e decode. |
La figura seguente mostra un esempio di encode.
|
Figura 13: encode in MP3Stego. |
Questa tecnica, come già detto, è ottima dal punto di vista qualitativo (all'udito il suono di input e quello di output sono identici) ma la capacità attribuita ai cover è modesta.
In questo esempio, il file in input ("in.wav") ha dimensioni di circa 1,73 MB e la sua capacità è di soli 1582 bits; "messaggio segreto.txt" è grande 71 bytes (568 bits) e può essere incapsulato senza problemi.
Il programma prende in input il file da nascondere in formato txt (nel nostro esempio "messaggio segreto.txt"), il contenitore in formato wav (nel nostro esempio "in.wav") e una passphrase, dopodiché provvede a comprimere il file wav iniettando, durante la fase di compressione, il file txt e generando in output il file mp3 (nel nostro esempio "out.mp3").
Per estrarre il file nascosto si utilizza il comando decode in questo modo:
decode -X output.mp3
Con questo comando si decomprimerà il file out.mp3 in out.mp3.pcm, tentando di estrarre eventuali informazioni nascoste e salvandole in out.mp3.txt.