Nascondi i tuoi segreti – Steganografia

Steganografia - Trova il Codice

Steganografia – Trova il Codice

La steganografia è l’arte e la scienza di scrivere messaggi nascosti in modo che nessuno, a parte il mittente e il destinatario, sospettino l’esistenza del messaggio, una forma di sicurezza attraverso l’occultamento in bella vista di cio’ che vogliamo non venga letto.

Il principio della steganografia

Nascondere dati all’interno di altri in modo che risultino nascosti è il principio della steganografia, una tecnica molto antica che si prefigge l’obiettivo di nascondere dati nella comunicazione tra due o più interlocutori.

Differenza tra steganografia e crittografia

La differenza tra queste due tecniche di sicurezza è importante. Usato per un messaggio, la crittografia si occupa di nasconderne il contenuto; la steganografia invece si occupa di nasconderne l’esistenza ed è quindi considerata una misura ulteriore soprattutto nei casi in cui la sola crittografia possa essere considerata non sufficiente.

Qualche ulteriore dettaglio lo si trova su wikipedia:
http://it.wikipedia.org/wiki/Steganografia

invece, per un approfondimento molto tecnico sulla steganografia si veda il seguente link:
http://www.dia.unisa.it/~ads/corso-security/www/CORSO-0001/Steganografia.htm

 

A cosa mi serve la steganografia

La steganografia consente di tenere lontano da occhi indiscreti contenuti importanti o dati sensibili ed è utilizzabile da coloro che pretendono un grado più elevato di privacy dei dati scambiati o condivisi con terzi.

Ad esempio, se ci pensate, inviare un file criptografato potrebbe mettere subito in allarme un malintenzionato perchè è comunque un file visibile cosi come è visibile che si tratta di un file cifrato quindi fa subito pensare che contenga segreti da rubare.
Nascondere invece un insieme di files dentro una sola immagine non fa scattare nessun allarme perchè ad occhio nudo non si vede che una banale normalissima immagine.

In una ipotetica discussione con scambio di files importanti, solo gli autorizzati e coloro che sono al corrente dell’occultamento operato nonchè solo coloro che dispongono della opportuna password potranno visualizzare i contenuti protetti.

Il concetto su cui si basa la steganografia dunque è racchiuso nel suo stesso nome che deriva dai termini greci stèganos (“nascosto”) e gràfein (“scrittura”): questa tecnica si pone di fornire un certo livello di sicurezza mediante segretezza.
I software steganografici più validi pero’ non si limitano semplicte a nascondere il messaggio da proteggere all’interno di una certa tipologia di file ma aggiungono una difesa in più, data dall’uso della crittografia sul testo in chiaro.

E ora diamo uno sguardo a tre programmi open source per Linux , ed uno specifico per Windows, che è possibile utilizzare per giocare con questa metodologia di scambio informazioni: Steghide & Outguess che sono completamente open ed uno con sorgenti chiusi Steg, mentre il tool per sistemi Windows si chiama OpenPuff.

Steghide
Steghide è un programma di steganografia che è in grado di nascondere i dati in vari tipi di immagine e file audio. I colori campione e le frequenze non vengono modificate rendendo così il file resistente in caso di test statistici.

Caratteristiche :

  • compressione di dati incorporati
  • crittografia dei dati incorporati
  • incorporamento di un checksum per verificare l’integrità dei dati estratti
  • supporto per JPEG, BMP, WAV e AU file
  • L’ultima versione di questo software è 10 anni, quindi non è esattamente somethign nuovo, ma le notizie teh buona è che si dovrebbe trovare nella repositoy di qualsiasi distribuzione, in modo da installare con il vostro gestore di pacchetti come yum, apt o emerge.

Uso base
Prima di iniziare assicuratevi di avere un immagine adatta per nascondere le informazioni in essa e le informazioni che si desidera nascondere in un file .txt. In questo esempio io ho i file di esempio, di nome myimage.jpg e mysecret.txt nella mia cartella home. Dopo che avro’ installato Steghide posso aprire un terminale e digitare:

Nascondere testo in immagini:

steghide embed -ef mysecret.txt -cf myimage.jpg

Questo chiederà di inserire una passphrase due volte.
Oppure, nel caso in cui non si desideri modificare l’immagine originale è possibile utilizzare:

steghide embed -ef mysecret.txt -cf myimage.jpg -sf myNEWimage.jpg

E per estrarre le informazioni dall’immagine è possibile utilizzare:

steghide extract -sf myimage.jpg

Questo comando estrarrà il file txt nella directory in cui è stato eseguito il programma.

Come ultima cosa è importante notare che le immagini o i file audio possono contenere un numero massimo determinato di kb di informazioni nascoste e per capire di quanti kb dispone una determinata immagine o file audio basta dare il comando:

steghide info myimage.jpg

e si riceverà un output simile a questo:

steghide info myimage.jpg

“myimage.jpg”:
format: jpeg
capacity: 3.5 KB
Try to get information about embedded data? (y/n)

Outguess
OutGuess è uno strumento steganografico universale che consente l’inserimento di informazioni nascoste nei bit ridondanti di sorgenti di dati. La natura della sorgente dei dati è irrilevante per OutGuess. Il programma si basa sui gestori di dati specifici che estraggono i bit ridondanti e li scrivono di nuovo dopo la modifica.

Outguess utilizza un oggetto generico iteratore per selezionare quali bit nei dati devono essere modificati. Un seme può essere usato per modificare il comportamento del iteratore e viene incorporato nei dati insieme con il resto del messaggio. Alterando il seme, outguess tenta di trovare una sequenza di bit che minimizza il numero di variazioni dei dati che devono essere effettuate.

Inoltre, permette di indovinare il nascondiglio di due messaggi distinti nei dati, fornendo così un plausibile livello di sicurezza. Si registra i bit che sono stati modificati in precedenza e li blocca.

Nascondere testo in immagini:
Per nascondere:
outguess -k "miapassword" -d testo.txt immagine.jpg output.jpg
Per leggere:
outguess -k "miapassword" -r output.jpg decifrato.txt

Recupero dei dati

È possibile recuperare i dati da un’immagine nel seguente modo:

outguess -k "miapassword" -r myoutput.jpg mysecret.txt

Reading out.jpg….
Extracting usable bits: 43283 bits
Steg retrieve: seed: 198, len: 141

Steg
Vuoi un software facile da usare, ma che non consente di sapere che cosa sta facendo esattamente? Allora vi consiglio di provare ad usare Steg ,un ottimo programma anche se closed source !

Steg è un software cross-platform e portatile, scritto in C ++. Utilizza tecniche di steganografia e crittografia per nascondere le informazioni all’interno di immagini compressi e non compressi. I formati di immagine supportati sono JPEG (JPG), TIFF, PNG, BMP . Con la sua semplice interfaccia grafica è possibile regolare i parametri della steganografia, valutare le immagini artefatte e usare sia la crittografia a chiave simmetrica che a chiave asimmetrica. Dati arbitrari possono essere nascosti in un file archivio compresso ed è anche possibile aggiungere un commento di testo.

Steg gira su GNU/Linux, Microsoft Windows e Apple Mac OS X, e si può scaricare direttamente dal sito ufficiale .

Il fatto di avere una interfaccia grafica e di poter supportare molti più formati dei programmi precedenti rende questo software molto più user friendly degli altri, che lavorano solo a riga di comando.

OpenPuff
OpenPuff è un software freeware sviluppato e distribuito da un programmatore italiano che, tra l’altro, ne fornisce anche il codice sorgente. L’autore Cosimo Oliboni presenta la sua applicazione utilizzando lo slogan “yet not another steganography software“, a rimarcare il fatto che OpenPuff contiene una serie di funzionalità “esclusive” che lo distinguono dai tanti programmi steganografici disponibili in Rete.

OpenPuff, innanzi tutto, è compatibile con tutte le versioni di Windows, non necessita di un account dotato di diritti amministrativi per essere avviato (non provoca neppure la comparsa degli avvisi di UAC) ed è portabile. A tal proposito, va sottolineato che dopo aver estratto il contenuto dell’archivio compresso di OpenPuff e fatto doppio clic sul suo eseguibile, il programma si avvierà immediatamente senza aggiungere alcun tipo di informazione nel registro di Windows ed astenendosi dal creare o modificare qualunque file sul disco fisso. Il software provvede ad acquisire i file indicati dall’utente, li cifra utilizzando uno degli algoritmi supportati quindi ne salva una o più porzioni in più file di vario genere (BMP, JPG, PNG, MP3, WAV, MP4, MPG, FLV, SWF, PDF,…). Questi ultimi vengono definiti “carrier files” dal momento che sono utilizzati come “contenitori” per il trasporto delle informazioni sensibili.

Anche l’uso di OpenPuff, come per Steg, e’ completamente grafico quindi sara’ di sicuro conforto per chi non e’ pratico di terminali e righe di comando. Il tool e’ sicuramente da provare quindi fateci un giro.

Cifrare una Directory con EncFS

Cifrare il contenuto di una Directory da occhi indiscreti non e’ mai stato cosi’ facile come con EncFS.

EncFS è uno speciale filsystem in userspace che consente di cifrare tutto il contenuto di una directory senza dover ricorrere all’uso di un dispositivo apposito. Pertanto il contenuto potrà essere memorizzato direttamente in un’altra directory, senza la necessità di dover creare un filesystem su un dispositivo cifrato. I primo passo è installare il programma con tutte le sue dipendenze con:

sudo apt-get install encfs

Una volta installato il programma la creazione di una directory cifrata è molto semplice, sarà sufficiente usare lo stesso specificando come primo argomento la directory che conterrà i contenuti cifrati e come secondo argomento quella in cui compariranno i contenuti in chiaro quindi creiamo in un PATH a nostro piacere due directory assegnate al nostro utente e con  permessi 700, dopodiche’ il comando da usare sara’ molto semplice cioè qualcosa del tipo:

mkdir ~/.protetta ~/protetta
chmod 700 ~/.protetta ~/protetta
encfs ~/.protetta ~/protetta
Creazione nuovo volume cifrato.
Scegliere tra una delle seguenti opzioni:
 digitare "x" per la modalità di configurazione per esperti,
 digitare "p" per la modalità paranoica preconfigurata.
 qualsiasi altra cosa o una riga vuota selezionerà la modalità standard.

la scelta della modalità standard è sufficiente per tutti gli usi normali, per cui una volta premuto invio verrà richiesta due volte l’immissione della password di cifratura dei dati, e montato automaticamente nella directory di destinazione. I file eventualmente già presenti nella directory cifrata non verranno toccati, ma verranno creati al suo interno file e directory cifrati il cui contenuto in chiaro apparirà soltanto nella directory cifrata.

Una volta completate le operazioni, per inibire l’accesso alla directory con i contenuti in chiaro sarà sufficiente smontarla con fusemount, con un comando del tipo:

fusermount -u ~/protetta

In seguito si potrà riaccedere al contenuto in chiaro riutilizzando encfs, esattamente con lo stesso comando visto in precedenza. In questo caso però non verranno fatte le domande relative alla creazione ma verrà semplicemente richiesta la password di decifrazione.

Su encfs è possibile anche indicare un tempo di inattività, decorso il quale la directory verrà automaticamente smontata, ad esempio con:

encfs -i 5 ~/.protetta_enfs ~/protetta

Smonterà la directory dopo 5 minuti di inattività se non risultano files aperti.

Infine è possibile cambiare la password per l’accesso alla directory con:

encfsctl passwd ~/.protetta_encfs