Steganografia
Seminario per il corso di Sicurezza
A.A. 2007/2008
Mattia Camporesi
[email protected]
Steganografia e Crittografia
La steganografia è l'arte di nascondere un messaggio
segreto all'interno di una comunicazione pubblica che
apparentemente trasporta tutt'altra informazione.
Da non confondere con la crittografia!!
Lo scopo della crittografia, fondamentalmente, è quello di
nascondere il contenuto di un messaggio, mentre la
steganografia si prefigge di nasconderne l’esistenza.
Etimologia
La parola steganografia deriva dall'unione dei due vocaboli greci
stego (rendere occulto) e grajh (scrittura). Steganografia è
dunque "la scrittura nascosta" o meglio ancora l'insieme delle
tecniche che consente a due o più persone di comunicare in
modo tale da nascondere non tanto il contenuto, ma la stessa
esistenza della comunicazione agli occhi di un eventuale
osservatore.
Si tratta di un'idea tutt'altro che nuova e che anzi vanta origini
molto antiche. Nel corso dei secoli sono stati escogitati
numerosi metodi steganografici, alcuni anche bizzarri.
Ad esempio…
Un po di storia…
Erodoto (400 a.C.) 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 riservato sul suo
cranio. Una volta che i capelli furono ricresciuti, inviò lo
schiavo alla sua destinazione, con la sola istruzione di
tagliarseli nuovamente.
Ai giorni nostri invece, lo studio di questa materia nella
letteratura scientifica si deve a Simmons che nel 1983
formulò il “Problema dei prigionieri”.
Il problema dei Prigionieri
Alice e Bob sono in prigione e devono
escogitare un piano per fuggire: tutti i loro
messaggi vengono scambiati tramite il
guardiano Eva. Se Eva 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.
Il problema dei Prigionieri
Perche utilizzarla?
Ai giorni nostri la steganografia viene adottata:






da organizzazioni militari e di intelligence
da forze di polizia e investigative
a causa delle recenti imposizioni limitative riguardo la
crittografia
per sistemi di pagamento
è un ottimo modo per mantenere una segretezza di cui, per
qualche ragione, sentiamo la necessità
da organizzazioni criminali
In sostanza, la steganografia funziona finchè nessuno si
aspetta che qualcuno ne stia facendo uso
In Sostanza
Caratteristica della steganografia è 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.
Immagine di Lincoln, contenente svariate altre immagini.
Una prima classificazione
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:


steganografia iniettiva
steganografia generativa
Steganografia Iniettiva
Questa 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.
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.
Nella pratica:
Oltre a questa classificazione di carattere
prettamente concettuale, ne esiste un’altra che
caratterizza le tecniche steganografiche più a
livello pratico:



Steganografia Sostitutiva
Steganografia Selettiva
Steganografia Costruttiva
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.
Steganografia Sostitutiva
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
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.
Steganografia Sostitutiva - Bitmap
Supponiamo di voler utilizzare come contenitore un file di tipo
bitmap (bmp) con una profondità di colore a 24 bit.
Un immagine, dal punto di vista digitale, non è altro che una
matrice MxN di 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è Red, Green e 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.
Steganografia Sostitutiva - Bitmap
Se ad esempio, abbiamo un pixel codificato in questo modo:
11100001 00000100 00010111
possiamo inserire tre bit del messaggio segreto. Se i bit del messaggio
segreto sono 110 il nostro pixel diventerà il seguente:
11100001
00000101
00010110
Le operazioni che si fanno su ogni singolo byte quindi possono essere
tre:
 Lo si lascia invariato
 Gli si aggiunge 1
 Gli si sottrae 1
Questo fa sì che ad occhio nudo le variazioni di colore siano
praticamente impercettibili.
Steganografia Sostitutiva - Bitmap
Dato che un solo pixel può contenere un'informazione segreta di 3 bit,
un'immagine di dimensioni MxN può contenere un messaggio
segreto lungo fino a (3*M*N)/8 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à.
Steganografia Sostitutiva
La tecnica appena descritta rappresenta il cuore della steganografia
sostitutiva, anche se di fatto ne esistono numerose variazioni.
Innanzitutto è ovvio che tutto quello che abbiamo detto vale non
solo per le immagini, ma anche per altri tipi di media, per esempio
suoni (wav) e video digitalizzati.
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 e proprio per
questo non sono molto popolari sulla rete, quindi il solo fatto di
scambiare un file del genere 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. Si sono però dovute trovare delle soluzioni alternative.
Steganografia Sostitutiva - JPEG
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.
File Compressi
Un discorso analogo a quello fatto per i file JPEG si può
fare per i file Mp3 e in generale per tutti i file compressi.
Il problema principale della steganografia che usa file
compressi come contenitori è che è 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.
Consigli…
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 e distruggere gli originali
dopo averli usati!!
Problema
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.
Steganografia Selettiva
La steganografia selettiva ha valore puramente
teorico e, per quanto se ne sappia, non viene
realmente utilizzata nella pratica. L'idea su cui si
basa è quella di procedere per tentativi,
ripetendo una stessa misura fintanto che il
risultato non soddisfa una certa condizione.
Come è evidente, il problema di questa tecnica è
che è troppo dispendiosa rispetto alla scarsa
quantità di informazione che è possibile
nascondere.
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. Questo approccio sembra la
soluzione migliore, ma in realtà anch'esso non è
esente da difetti.
Steganografia Costruttiva
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.
Sistema Steganografico Ideale
A causa dei suddetti problemi, la tecnica sostitutiva 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.
Principio di Kerckhoff
In ambito crittografico si danno le definizioni di vari livelli di
robustezza di un sistema, a seconda della capacità che esso
ha di resistere ad attacchi basati su vari tipi di informazioni a
proposito del sistema stesso.
In particolare, i sistemi più robusti sono quelli che soddisfano i
requisiti posti dal principio di Kerckhoff, che, formulato in
ambito steganografico suona così:
la sicurezza del sistema deve basarsi sull'ipotesi che il nemico
abbia piena conoscenza dei dettagli di progetto e
d’implementazione del sistema stesso; la sola informazione di
cui il nemico non può disporre è una sequenza 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.
Primo Problema
Se si vuole aderire a questo principio, è evidente che le tecniche esposte fin
qui non sono ancora soddisfacenti per caratterizzare un sistema
steganografico completo.
Infatti, se i dettagli di implementazione dell'algoritmo sono resi di dominio
pubblico, chiunque è in grado di accedere a eventuali informazioni
nascoste, semplicemente applicando il procedimento inverso
(nell'esempio visto, ciò si ottiene "riaggregando" i bit meno significativi
dell'immagine).
Per affrontare questo problema, è necessario introdurre una fase di preelaborazione del file segreto, che lo renda non riconoscibile come
portatore di informazioni significative.
La soluzione più ovvia è quella di impiegare un sistema di crittografia
convenzionale (per esempio, il PGP), il quale garantisce appunto
l'inaccessibilità da parte del nemico al messaggio vero e proprio.
Secondo Problema
La storia purtroppo non è finita qui, perché in questo
meccanismo a due stadi il secondo processo è reversibile.
Poiché si presume che un crittoanalista esperto possa
facilmente riconoscere un file prodotto da un programma di
crittografia convenzionale, questo schema è ancora da
considerarsi incompleto.
Questo punto è di importanza fondamentale, perché rende
definitivamente non valido il sistema steganografico,
indipendentemente dal fatto che il contenuto dell'informazione
segreta resti inaccessibile.
In altre parole, la crittografia fallisce il suo scopo quando il
nemico legge il contenuto del messaggio: la steganografia
invece fallisce quando il nemico si rende semplicemente conto
che esiste un messaggio segreto dentro il file contenitore, pur
non potendolo leggere.
Soluzione
È opportuno quindi che il messaggio crittografato, prima di
essere immerso nel contenitore, venga "camuffato" in
modo da diventare difficilmente distinguibile da semplice
rumore.
A tale scopo si può procedere in questo modo:
Il più semplice è quello di eliminare dal file criptato da PGP
tutte le informazioni che lo identificano come tale: il PGP,
infatti, genera un file che rispetta un particolare formato,
contenente, oltre al blocco di dati cifrati vero e proprio,
informazioni piuttosto ridondanti che facilitano la
gestione del file da parte dello stesso PGP…ma saltano
subito agli occhi di un esperto!
Soluzione
Esiste un piccolo programma, Stealth, capace di togliere e di
reinserire nella fase di ricostruzione tutte le informazioni
diverse dal blocco di dati cifrati.
Il file che esce da Stealth appare come una sequenza di bit del
tutto casuale, molto difficile da distinguere dal normale
rumore.
Software Stenografici
Esistono svariati software stenografici, i più famosi sono
 Steganos 3 Security Suite - Il programma è stato sviluppato dalla
DEMCOM di Francoforte (Germania) in collaborazione con
CenturionSoft di Washington (USA)
 S-Tools - 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.
 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)
distribuisce anche il sorgente liberamente.
 Steghide - free software che occulta un messaggio segreto di testo
in una immagine jpg.
Riferimenti

Procedure Steganografiche e Protocolli Speciali per l’Occultamento
e la Trasmissione dei Dati
Dott. Serena Longhini

http://www.dia.unisa.it/~ads/corso-security/www/CORSO0001/Steganografia.htm
Tools steganografici, Prof. Alfredo De Santis

“Steganografia, l'arte della scrittura nascosta” di Claudio Agosti

http://www.stegoarchive.com Steganography information, software

www.tonycrypt.com - Steganografia
and news to enhance you privacy
Scarica

Steganografia