VoIP and Hacking | Consulenza Documentazione

Crittografia e steganografia a difesa della privacy

by admin on Mar.12, 2009, under Linux, Sicurezza, Società, Tools

la liberta’ di espressione e la privacy su Internet sono costantemente minacciate. L’utente che sia cosciente di questo non è tuttavia indifeso di fronte a queste minaccie, avendo a disposizione una valida serie di strumenti per proteggere la riservatezza dei propri dati e delle proprie comunicazioni.

In particolare la formula open source si dimostra particolarmente efficace nel rispondere ai requisiti necessari a questo proposito per dei motivi ben precisi:
Il codice pubblicamente disponibile garantisce dalla presenza di backdoors inserite dagli autori.
L’evidenza degli algoritmi utilizzati non conpromette in alcun modo l’efficacia della soluzione, come dimostrato ad esempio dalla crittografia moderna.
Proprio la crittografia rappresenta uno dei modi più diffusamente utilizzati per la difesa della riservatezza.
Il grado di efficacia di tale strumento è chiaramente legato al metodo di cifratura adottato, per cui diviene possibile raggiungere una segretezza pressoché totale semplicemente aderendo a standard ben precisi e documentati.
Uno di questi standard è rappresentato dall’AES o Advanced Encryption Standard.
Si tratta di un metodo di cifratura a chiave simmetrica adottato dal governo degli Stati Uniti per cifrare documenti classificati “secret” o “top secret”, a seconda della chiave originata (128, 192 o 256 bits).
Un ottimo software capace di questo tipo di codifica è aescrypt (www.aescrypt.com), liberamente disponibile anche per piattaforma Windows.
Per Linux il software è disponibile come tarball di sorgenti, che una volta estratti vanno compilati ed installati con una banale sequenza make && make install.
Si ha a questo punto a disposizione un omonimo eseguibile a linea di comando (aescrypt) con una serie di possibili argomenti.
Nell’ipotesi di voler crittare un documento di nome messaggio_segreto.txt si può procedere come segue:

#  aescrypt -e -p “<passphrase>” messaggio_segreto.txt

Il comando precedente genera un nuovo file, messaggio_segreto.txt.aes, che è semplicemente la versione crittata del file originale.
Il contenuto è ora perfettamente al sicuro da sguardi indiscreti, fino al momento in cui verrà estratto tramite:

#  aescrypt -d -p “<passphrase>” -o messaggio_segreto_estratto.txt messaggio_segreto.txt.aes

In determinate circostanze la soluzione appena vista è perfetta. Ad esempio quando si desidera portare con sè i propri dati sensibili, si pensi al caso di un diplomatico o di un ricercatore che debba partecipare a qualche congresso.
Non è altrettanto adatto quando si deve proteggere una comunicazione di natura ricorrente, per la intrinseca fragilità della passphrase scelta e della inaffidabile natura umana, che potrebbe rivelarla.
In circostanze particolari, ma purtroppo drammaticamente reali (si pensi al caso di un regime dittatoriale che pratichi sistematicamente la censura su quanto trapela dal paese), nascondere il contenuto di una comunicazione non è sufficiente, in quanto la stessa potrebbe venire indifferentemente impedita e quindi resa inefficace, oltre a far individuare e mettere in pericolo lo stesso autore.
Una soluzione particolarmente brillante di superare questo grave problema sta nel rivolgersi ad un metodo diverso dalla crittografia e che consiste stavolta nel nascondere la natura stessa dei dati che vogliamo mantenere segreti, la steganografia.
Questa scienza utilizza un contenuto noto ed evidente per celarne un altro nascosto, estraibile solo da chi ne conosca l’esistenza ed il modo per estrarlo.
Senza entrare nella teoria di questo particolare tipo di steganografia, detta sostitutiva, vedremo come sia possibile mimetizzare un contenuto testuale all’interno di una immagine o di un file sonoro, senza minimamente alterarne il contenuto percepibile dai sensi umani, anche affinatissimi.
Consideriamo il caso di una immagine.  In una codifica molto comune essa può essere rappresentata come una lunga serie di terne di valori RGB, una terna per ciascun punto, riga per riga.
Un qualunque elemento di una qualsiasi terna può assumere un valore variabile da 0 a 255 (in una codifica molto comune), per poter essere rappresentato da un singolo byte.
E’ possibile sfruttare questa rappresentazione per memorizzare uno (o più) bit del contenuto da nascondere per ciascun byte del file contenitore sostituendo i bit originali meno significativi.
L’operazione non comporta conseguenze apparenti sul file contenitore, che appare inalterato ad un esame visivo anche molto attento.
Eppure, anche utilizzando solamente il bit meno significativo di ogni byte, si riesce ad iniettare contenuti di dimensioni notevoli in una immagine di dimensioni modeste, esattamente un ottavo della dimensione del file contenitore, la cui grandezza peraltro rimane inalterata dopo l’inoculazione.
Le dimensioni del possibile contenuto raddoppiano utilizzando invece i due bit meno significativi di ciascun byte del contenitore, e si potrebbero di questo passo raggiungere anche risultati migliori nel rapporto contenitore/contenuto, ma si tratta di un approccio sconsigliabile per non rischiare di degradare la qualità dell’immagine in maniera evidente e sopratutto il rischio di essere scoperti da qualche software di analisi che potrebbe insospettirsi rispetto a variazioni di luminosità isolate in zone omogenee. Pertanto il consiglio è invece quello di distribuire il contenuto a intervalli quanto più possibile ampi.
Per Linux e anche esso coperto da GPL è disponibile il tool steghide (steghide.sourceforge.net), il quale è anche capace di crittare il contenuto da trattare prima di inocularlo, ed anche di comprimerlo.
Forti di questa informazione potremmo addirittura effettuare una doppia crittazione del contenuto steganografico. Se infatti volessimo nascondere il contenuto del file messaggio_segreto.txt.aes visto in precedenza, all’interno di un file immagine, potremmo farlo tramite:

# steghide –embed -cf immagine.jpg -e blowfish -ef messaggio_segreto.txt.aes
Enter passphrase:
Re-Enter passphrase:

ottenendo di occultare in tal modo il nostro messaggio segreto, peraltro già crittato AES, all’interno del file immagine.jpg, crittato una volta di più, stavolta però con algoritmo di codifica blowfish.
Il meccanismo steganografico adottato dal programma è, per inciso, molto più sofisticato di quello presentato sopra.
L’operazione di estrazione del contenuto in chiaro richiede quindi due passaggi:

# steghide –extract -sf immagine.jpg -xf messaggio_segreto.txt.aes
Enter passphrase:
….
# aescrypt -d -p “<passphrase>” -o messaggio_segreto_estratto.txt messaggio_segreto.txt.aes

Send post as PDF to PDF | PDF Creator | PDF Converter
:,

Comments are closed.

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...