Visualizzazione post con etichetta Steghide. Mostra tutti i post
Visualizzazione post con etichetta Steghide. Mostra tutti i post

giovedì 18 aprile 2024

Steganografia

La steganografia, dal greco "scrittura nascosta", è l'arte di occultare un messaggio segreto all'interno di un oggetto di uso comune, come un'immagine, un file audio o un testo. Il messaggio nascosto non dovrebbe essere rilevabile da un osservatore casuale, rendendo la steganografia un utile strumento per la comunicazione segreta.

Storia della Steganografia

Le tecniche steganografiche esistono da secoli. Un esempio famoso è quello di Demarato di Sparta, che nel 440 a.C. raschiò un messaggio su una tavoletta di legno, la coprì di cera e scrisse un messaggio innocuo sulla superficie.  Nell'antichità le tavolette di cera erano normalmente usate per scrivere testi provvisori, pertanto non destava sospetti. Il messaggio originale poteva essere letto sciogliendo la cera.

Nel corso della storia, la steganografia è stata utilizzata per vari scopi, tra cui:
  • Trasmettere messaggi segreti in tempo di guerra
  • Evadere la censura
  • Proteggere la proprietà intellettuale

Con l'avvento della tecnologia digitale, sono emerse nuove tecniche steganografiche. I messaggi segreti possono essere nascosti all'interno di immagini digitali, file audio, video e persino nella struttura di un sito web.


Come funziona la steganografia

Esistono due metodi principali per nascondere un messaggio segreto utilizzando la steganografia:

Sostituzione LSB. Questo metodo modifica i bit meno significativi (LSB, 
Last Significant Bit) dei pixel di un'immagine digitale. I LSB sono la parte meno visibile di un pixel e possono essere modificati senza che l'immagine risulti alterata in modo significativo.

Steganografia basata su stego. Questo metodo nasconde il messaggio segreto all'interno di un file di copertura che ha già una certa ridondanza, come un file audio o un'immagine compressa. Il messaggio viene nascosto in modo da non influire sulla qualità del file di copertura.


Applicazioni della steganografia

La steganografia ha una vasta gamma di potenziali applicazioni, tra cui:
  • Protezione della proprietà intellettuale. I marcatori digitali steganografici possono essere utilizzati per identificare la proprietà di contenuti digitali come immagini, musica e video.
  • Autenticazione dei dati. La steganografia può essere utilizzata per incorporare firme digitali nei dati, aiutando a verificarne l'autenticità e prevenire la manomissione.
  • Comunicazione segreta. La steganografia può essere utilizzata per trasmettere messaggi segreti online, rendendo più difficile per gli intercettatori il rilevamento e la decodifica del messaggio.

Limiti della steganografia

Nonostante i suoi potenziali benefici, la steganografia presenta anche diversi limiti:
  • Capacità di embedding. La quantità di dati segreti che possono essere nascosti in un file di copertura è limitata.
  • Robustezza. I messaggi steganografici possono essere vulnerabili a tecniche di rilevamento e rimozione.
  • Problemi legali. L'uso della steganografia può essere illegale in alcuni casi, ad esempio se viene utilizzato per trasmettere materiale illegale.

Nascondere dati in un'immagine utilizzando la steganografia basata su LSB

Esistono diversi metodi per nascondere dati in un'immagine, ma uno dei più comuni e semplici è la steganografia basata sui bit meno significativi (LSB).

I passaggi principale nella steganografia LSB sono i seguenti:
  • Selezione dell'immagine di copertura. Selezionare un'immagine digitale come JPEG o PNG come "contenitore" per il messaggio segreto. Le immagini con più colori e dettagli sono generalmente più adatte, in quanto offrono più bit da modificare senza un degradamento visibile dell'immagine. Ad esempio in un'immagine di un paesaggio "monotono" di un deserto e cielo azzurro una piccola modifica potrebbe saltare subito all'occhio.
  • Conversione dei dati in bit. Il messaggio segreto, che può essere un testo, un'immagine o un altro file, deve essere convertito in una sequenza di bit.
  • Sostituzione dei bit LSB. I bit meno significativi (LSB) dei pixel dell'immagine di copertura vengono sostituiti con i bit del messaggio segreto. I LSB hanno un impatto minimo sulla qualità visibile dell'immagine, quindi la modifica dovrebbe essere impercettibile all'occhio umano.
  • Salvataggio dell'immagine steganografata. L'immagine con i bit LSB modificati dovrà essere salvata come nuovo file. Questa immagine conterrà sia il contenuto originale che il messaggio segreto nascosto al suo interno.


Esempio pratico:

Immaginiamo di voler nascondere un messaggio di testo semplice in un'immagine JPEG. Ogni pixel di un'immagine JPEG è codificato con 24 bit, che rappresentano milioni di sfumature di colore. Modificando solo l'LSB di ogni pixel, possiamo nascondere un bit di messaggio segreto in ogni pixel.

Con un'immagine di 1000x1000 pixel, avremmo 1.000.000 pixel, che ci permettono di nascondere un messaggio di testo di circa 100.000 caratteri. L'immagine modificata sembrerà identica all'originale all'occhio nudo, ma conterrà il messaggio segreto codificato nei suoi bit meno significativi.


Strumenti per la steganografia LSB:

Esistono diversi software gratuiti e a pagamento che possono essere utilizzati per implementare la steganografia LSB. Alcuni strumenti popolari includono:
  • StegHide: Un programma open-source multipiattaforma per nascondere dati in immagini, audio e file video.
  • OutGuess: Un altro strumento open-source per la steganografia LSB, con supporto per immagini, audio e testo.
  • HideMyPic: Un programma Windows facile da usare per nascondere immagini, testo e file all'interno di immagini di copertura.
  • OpenStego: un programma open-source dotato di GUI e molto semplice da utilizzare. 


Vantaggi e svantaggi della steganografia LSB:

Vantaggi:
  • Semplice da implementare
  • Funziona con vari tipi di immagini
  • Può nascondere una discreta quantità di dati
Svantaggi:
  • Fragile alle tecniche di rilevamento steganografico
  • Non offre una forte sicurezza
  • La modifica dei bit LSB può ridurre leggermente la qualità dell'immagine

La steganografia LSB è un metodo semplice ed efficace per nascondere dati in immagini digitali. Tuttavia, è importante tenere conto dei suoi limiti quando si utilizza per la comunicazione sensibile. Per una maggiore sicurezza, è consigliabile combinare la steganografia con altre tecniche di crittografia.

Oltre alla steganografia LSB, esistono altri metodi più sofisticati per nascondere dati in immagini, come la steganografia basata su stego e la steganografia basata sui domini di trasformazione. Questi metodi offrono livelli di sicurezza più elevati, ma possono essere più complessi da implementare e richiedono maggiori risorse computazionali.

La scelta del metodo steganografico più adatto dipende dalle specifiche esigenze e dai requisiti di sicurezza.


StegHide. Nascondere del testo in un'immagine

La versione più recente si StegHide può essere scaricata da https://steghide.sourceforge.net/download.php.
Steghide - Download
FIG 1 - Steghide - Download

StegHide va utilizzato da riga di comando.

Comandi
Il primo argomento da passare a StegHide deve sempre essere uno di questi comandi
  • embed - Incorpora i dati segreti in un file di copertura, creando così un file stego.
  • extract - Estrae i dati segreti da un file stego.
  • info - Visualizza informazioni su un file di copertura o stego.
  • encinfo - Visualizza un elenco di algoritmi e modalità di crittografia utilizzabili. Non sono richiesti argomenti.
  • version - Visualizza informazioni brevi sulla versione. Non sono richiesti argomenti.
  • license - Visualizza la licenza di steghide. Non sono richiesti argomenti.
  • help - Visualizza una schermata di aiuto. Non sono richiesti argomenti.

 

EMBED
È necessario utilizzare il comando embed se si desidera incorporare dati segreti in un cover file. I seguenti argomenti possono essere utilizzati con il comando embed:
  • -ef nome_file_da_incorporare - Specifica il file che verrà incorporato (il file che contiene il messaggio segreto). Si noti che steghide incorpora il nome del file originale nel file stego. Quando si estraggono i dati il comportamento predefinito è quello di salvare il file incorporato nella directory corrente con il suo nome originale. Se questo argomento viene omesso o il nome del file è -, steghide leggerà i dati segreti da input standard.
  • -cf nome_cover_file - Specifica il cover file che verrà utilizzato per incorporare i dati. Il file deve essere in uno dei seguenti formati: AU, BMP, JPEG o WAV. Il formato del file viene rilevato automaticamente in base alle informazioni di intestazione (l'estensione non è rilevante). Se questo argomento viene omesso o il nome del file è -, steghide leggerà il cover file dallo standard input.
  • -sf nome_stegofile - Specifica il nome del file stego che verrà creato. Se questo argomento viene omesso le modifiche per incorporare i dati segreti verranno apportate direttamente al cover file specificato (senza salvarlo con un nuovo nome).
  • -e  algo [ mode ] | mode [ algo ] - Specifica i parametri di crittografia. Questa opzione deve essere seguita da una o due stringhe che che identificano un algoritmo e/o una modalità di crittografia. È possibile ottenere i nomi di tutti gli algoritmi disponibili e delle modalità  supportate con il comando encinfo. La crittografia predefinita è rijndael-128 (AES) in modalità cbc. Se non si desidera utilizzare alcuna crittografia, utilizzare -e none.
  • -z livello_compressione - Specifica il livello di compressione. Il livello di compressione può essere un numero qualsiasi compreso tra 1...9, dove 1 significa migliore velocità e 9 significa migliore compressione.
  • -Z - Non comprime i dati segreti prima di incorporarli.
  • -K - Non incorpora un checksum CRC32. È possibile utilizzare questa opzione se i dati segreti contengono già un qualche tipo di checksum o se non si vogliono incorporare i 32 bit extra necessari per il checksum.
  • -N - Non incorpora il nome del file segreto. Se si usa questa opzione, l'estrattore dovrà specificare un nome di file per indicare a a steghide dove scrivere i dati incorporati.

EXTRACT
Il comando extract va utilizzato per estrarre il messaggio incorporato all'interno del cover file. Con questo comando si possono usare i seguenti argomenti:
  • -sf nome_filename - Specificare il file stego (il file che contiene i dati incorporati). Se questo argomento viene omesso o il nome del file è -, steghide leggerà un file stego dall'input standard.
  • -xf nome_file - Crea un file con il nome nome_file e vi scrive i dati incorporati nel file stego. Questa opzione sostituisce il nome del file incorporato nel file stego. Se questo argomento viene omesso, i dati incorporati verranno salvati nella directory corrente con il nome originale.

ALTRE OPZIONI
Le seguenti opzioni possono essere utilizzate con tutti i comandi 
  • -p - Usa la stringa che segue questo argomento come passphrase. Se la passphrase contiene spazi bianchi, è necessario racchiuderla tra virgolette, ad esempio: -p "una passphrase molto lunga".
  • -v - Visualizza informazioni dettagliate sullo stato del processo di incorporazione o estrazione.
  • -q - Sopprime i messaggi informativi.
  • -f - Sovrascrive sempre i file esistenti.


Esempi
steghide embed -cf immagine.jpg -ef testo.txt
Eseguendo questo comando verrà richiesto di inserire (e confermare) una passphrase che sarà necessaria per recuperare il testo segreto. Il comando incorpora il file testo.txt all'interno del file immagine.jpg. Dato che non viene specificato un nuovo file per l'output, viene modificato direttamente il file immagine.jpg.

Per estrarre il contenuto nascosto dal file, il comando sarà
steghide extract -sf immagine.jpg
Anche in questo caso verrà richiesto di digitare la passphrase (la stessa utilizzata nel comando embed).
Steghide
FIG 2 - Steghide